题目要求所有牛都去避雨的最长时间最小。

显然需要二分 二分之后考虑如何判定。

显然每头牛都可以去某个地方 但是前提是最短路径<=mid.

依靠二分出来的东西建图。可以发现这是一个匹配问题 dinic即可。

注意数组要开两倍 因为要拆点 我开小了wa了两发才意识过来。

const int MAXN=410;
int n,m,S,len,T,L,R,ans;
ll a[MAXN][MAXN];
int c[MAXN],cc[MAXN],cur[MAXN],vis[MAXN],q[MAXN];
int lin[MAXN],ver[MAXN*MAXN<<1],nex[MAXN*MAXN<<1],e[MAXN*MAXN<<1];
inline void add(int x,int y,int z)
{
ver[++len]=y;nex[len]=lin[x];lin[x]=len;e[len]=z;
ver[++len]=x;nex[len]=lin[y];lin[y]=len;e[len]=0;
}
inline int dinic(int x,int flow)
{
if(x==T)return flow;
int res=flow,k;
for(int i=cur[x];i&&res;i=nex[i])
{
int tn=ver[i];cur[x]=i;
if(vis[tn]==vis[x]+1&&e[i])
{
k=dinic(tn,min(e[i],res));
if(!k){vis[tn]=0;continue;}
e[i]-=k;e[i^1]+=k;res-=k;
}
}
return flow-res;
}
inline int bfs()
{
rep(1,T,i)vis[i]=0,cur[i]=lin[i];
L=R=0;q[++R]=S;vis[S]=1;
while(++L<=R)
{
int x=q[L];
go(x)
{
if(vis[tn]||!e[i])continue;
vis[tn]=vis[x]+1;
q[++R]=tn;
if(tn==T)return 1;
}
}
return 0;
}
inline int check(ll x)
{
len=1;
memset(lin,0,sizeof(lin));
rep(1,n,i)
{
rep(1,n,j)if(a[i][j]<=x)add(i,j+n,INF);
add(S,i,c[i]);add(i+n,T,cc[i]);
}
int flow,sum=0;
while(bfs())while((flow=dinic(S,INF)))sum+=flow;
//cout<<sum<<endl;
return sum>=ans;
}
int main()
{
freopen("1.in","r",stdin);
get(n);get(m);int cnt1=0;S=n<<1|1;T=S+1;
rep(1,n,i)get(c[i]),cc[i]=read(),ans+=c[i],cnt1+=cc[i];
if(ans>cnt1){puts("-1");return 0;}
rep(1,n,i)rep(1,i,j)if(i!=j)a[j][i]=a[i][j]=P;
rep(1,m,i)
{
int get(x);int get(y);int get(z);
a[x][y]=a[y][x]=min(a[x][y],(ll)z);
}
rep(1,n,k)rep(1,n,i)rep(1,i,j)a[j][i]=a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
ll l=0,r=0;
rep(1,n,i)rep(1,i,j)if(a[i][j]!=P)r=max(r,a[i][j]);
if(!check(r)){puts("-1");return 0;}
while(l<r)
{
ll mid=(l+r)>>1;
if(check(mid))r=mid;
else l=mid+1;
}
putl(l);return 0;
}

bzoj 1738 [Usaco2005 mar]Ombrophobic Bovines 发抖的牛 最大流+二分的更多相关文章

  1. BZOJ 1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛( floyd + 二分答案 + 最大流 )

    一道水题WA了这么多次真是.... 统考终于完 ( 挂 ) 了...可以好好写题了... 先floyd跑出各个点的最短路 , 然后二分答案 m , 再建图. 每个 farm 拆成一个 cow 点和一个 ...

  2. BZOJ 1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛

    Description 约翰的牛们非常害怕淋雨,那会使他们瑟瑟发抖.他们打算安装一个下雨报警器,并且安排了一个撤退计划.他们需要计算最少的让所有牛进入雨棚的时间.    牛们在农场的F(1≤F≤200 ...

  3. BZOJ 1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛 网络流 + 二分 + Floyd

    Description FJ's cows really hate getting wet so much that the mere thought of getting caught in the ...

  4. BZOJ1738 [Usaco2005 mar]Ombrophobic Bovines 发抖的牛

    先预处理出来每个点对之间的最短距离 然后二分答案,网络流判断是否可行就好了恩 /************************************************************ ...

  5. 【bzoj1738】[Usaco2005 mar]Ombrophobic Bovines 发抖的牛 Floyd+二分+网络流最大流

    题目描述 FJ's cows really hate getting wet so much that the mere thought of getting caught in the rain m ...

  6. BZOJ 1739: [Usaco2005 mar]Space Elevator 太空电梯

    题目 1739: [Usaco2005 mar]Space Elevator 太空电梯 Time Limit: 5 Sec  Memory Limit: 64 MB Description The c ...

  7. poj2391 Ombrophobic Bovines 拆点+二分法+最大流

    /** 题目:poj2391 Ombrophobic Bovines 链接:http://poj.org/problem?id=2391 题意:有n块区域,第i块区域有ai头奶牛,以及一个可以容纳bi ...

  8. BZOJ 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛( 二分答案 )

    最小最大...又是经典的二分答案做法.. -------------------------------------------------------------------------- #inc ...

  9. bzoj 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛

    1734: [Usaco2005 feb]Aggressive cows 愤怒的牛 Description Farmer John has built a new long barn, with N ...

随机推荐

  1. python爬京东(带GUI)

    最近写了个专门爬百度的,后来又想爬京东的,还是采用上次的BeautifulSoup+requests模块 下面直接上代码,看不懂的可以看这篇文章或者注释来学习 #!/usr/bin/env pytho ...

  2. mac篇---iterm2的基本常用命令

    标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:comma ...

  3. Jenkins+tomcat自动发布的热部署/重启及遇到的坑解决办法

    一.背景 公司的项目一直手动maven打包.上传服务器.关闭/开启tomcat,整个流程下来耗时耗力,虽然可以将所有流程通过shell脚本一次性解决,但如果可以通过idea的Jenkins插件一键自动 ...

  4. 本地缓存解决方案-Caffeine Cache

    1.1 关于Caffeine Cache ​ Google Guava Cache是一种非常优秀本地缓存解决方案,提供了基于容量,时间和引用的缓存回收方式.基于容量的方式内部实现采用LRU算法,基于引 ...

  5. redis(二):Redis 命令

    Redis 命令用于在 redis 服务上执行操作. 要在 redis 服务上执行命令需要一个 redis 客户端.Redis 客户端在我们之前下载的的 redis 的安装包中. 语法 Redis 客 ...

  6. Python之爬虫(二十二) Scrapy分布式原理

    关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列. 分布式架 ...

  7. Windows分页文件设置不当导致SQL Server服务被终止

    Windows分页文件设置不当导致SQL Server服务被终止 文章说明 在正式开始验证和测试之前,先介绍Windows分页文件和SQL Server的动态内存管理.下面测试将分为两种测试场景:场景 ...

  8. bzoj3367[Usaco2004 Feb]The Big Game 球赛*

    bzoj3367[Usaco2004 Feb]The Big Game 球赛 题意: n只奶牛,每只支持两个球队中的一个,它们依次上车,上到一定程度可以开走这辆车并换下一辆继续上.要求一辆车上支持不同 ...

  9. IE9+的树状下拉菜单,支持多选

    //JS核心代码function treeBox(Config){var el=eval(Config.el);var w=Config.width;var h=Config.height;var d ...

  10. linux 安装superset

    背景说明 公司数据分析人员需要将日常监控分析数据进行可视化,在踩了一些坑之后,终于在业务环境中搭建成功superset,后续复现两次流程也是成功的,分享一波... 业务环境说明 操作系统:centos ...