博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【51nod1757】大灾变
阅读量:5921 次
发布时间:2019-06-19

本文共 1573 字,大约阅读时间需要 5 分钟。

Description

有一棵树,树上有些特殊点,每个不是特殊点的点有一个人,每个人走过一条边的时间为1。现在所有的人要走到特殊点上,每个点可以有多个人,但每条边每1时间只能走一个人。求所有人到达特殊点的最小时间。

Solution

考虑每个人应该走向哪个洞穴。假如一个人要到一个洞穴\(a_i\),到达距离为\(d\),把每个洞穴拆成\(n\)个点,如果还没有人要走到这个洞穴的第\(d\)号点,那么这个人可以走到这个点,如果已经被另一个人所走到,则可以匹配该洞穴的下一个点或下一个洞穴。要使所有洞穴被走到编号的最大值最小。

于是可以二分答案,于是转换成判定性问题,网络流或者匈牙利判一下有没有匹配即可。

Code

#include
#include
#include
#include
#include
#define fo(i,j,k) for(int i=j;i<=k;++i)#define fd(i,j,k) for(int i=j;i>=k;--i)#define rep(i,x) for(int i=ls[x];i;i=nx[i])using namespace std;const int N=2010,maxn=1e5+10,M=4e5+10,inf=1e9;int to[M],nx[M],ls[maxn],vl[M],num=1;int S,T;int a[N];int n,m;bool bz[N];void link(int u,int v,int w){ to[++num]=v,nx[num]=ls[u],ls[u]=num; vl[num]=w; to[++num]=u,nx[num]=ls[v],ls[v]=num; vl[num]=0;}vector
e[N];int d[N][N],now;void dfs(int x,int fr,int t){ d[now][x]=t; int o=e[x].size(); fo(i,0,o-1) if(e[x][i]!=fr) dfs(e[x][i],x,t+1);}int h[maxn],q[maxn];bool bfs(){ int l=0,r=1; memset(h,0,sizeof(h)); h[q[1]=S]=1; while(l
0;}int flow(int x,int t){ if(x==T) return t; int fl=t; rep(i,x){ int v=to[i]; if(!vl[i] || h[v]!=h[x]+1) continue; int tmp=flow(v,min(t,vl[i])); t-=tmp,vl[i]-=tmp,vl[i^1]+=tmp; if(!t) break; } if(fl==t) h[x]=-1; return fl-t;}bool check(int x){ memset(ls,0,sizeof(ls)); S=n+x*m+1,T=S+1; num=1; fo(i,1,m) fo(j,1,x){ link(i+n+(j-1)*m,T,1); if(j
>1; check(mid)?r=mid:l=mid; } if(check(l)) r=l; printf("%d\n",r);}

转载于:https://www.cnblogs.com/sadstone/p/9090760.html

你可能感兴趣的文章
算法学习之路|A除以B
查看>>
mac php 图片验证码无法显示问题,gd库没有freetype的问题
查看>>
有那么一些想法哪
查看>>
配置性能警报、熟练安装与使用PCAnyWhere远程控制工具
查看>>
python基础
查看>>
MATLAB实现系统传递函数模型的建立与转换
查看>>
Python中的字典及举例
查看>>
js 中时间格式化的几种方法
查看>>
程序的本质在于逻辑
查看>>
没有脱离实践能力的程序设计基础
查看>>
内核中的UDP socket流程(7)——udp_sendmsg
查看>>
LoadRunner levels of integration with web pages
查看>>
模拟MBR扇区故障
查看>>
lzg_ad:Regsvr32.exe实用小技巧
查看>>
C# 视频监控系列(13):H264播放器——控制播放和截图
查看>>
桌面虚拟化(二):遗落的天堂
查看>>
lzg_ad:构建通用版本的XPE\WES镜像文件
查看>>
lzg_ad:Sysprep和System Cloning Tool有什么区别
查看>>
关于近期学习java se篇的小结及一些学习路线的思考
查看>>
Ubuntu Kylin体验记(天朝定制版ubuntu)
查看>>