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

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

显然每头牛都可以去某个地方 但是前提是最短路径<=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. 蓝桥杯javaB组入坑

    蓝桥杯Java B组 准备工作 练习入口 | 准备资料 | 查阅说明 编辑环境 我们建议您使用大赛指定的编辑环境来编写你的代码,以保证评测时和我们的编译环境一致,同时和比赛时使用的环境也一致. 推荐的 ...

  2. 一文说清 KubeSphere 容器平台的价值

    KubeSphere 作为云原生家族 后起之秀,开源近两年的时间以来收获了诸多用户与开发者的认可.本文通过大白话从零诠释 KubeSphere 的定位与价值,以及不同团队为什么会选择 KubeSphe ...

  3. Emergency Evacuation 题解

    The Japanese government plans to increase the number of inbound tourists to forty million in the yea ...

  4. POJ3190贪心

    题意:这里有N只 (1 <= N <= 50,000) 挑剔的奶牛! 他们如此挑剔以致于必须在[A,B]的时间内产奶(1 <= A <= B <= 1,000,000)当 ...

  5. 基于SpringBoot AOP面向切面编程实现Redis分布式锁

    基于SpringBoot AOP面向切面编程实现Redis分布式锁 基于SpringBoot AOP面向切面编程实现Redis分布式锁 基于SpringBoot AOP面向切面编程实现Redis分布式 ...

  6. ICP备案业务中取消接入和注销网站是什么

    ICP备案业务中取消接入和注销网站是什么 之前给大家介绍了ICP备案业务中的<什么是ICP备案>.<ICP备案类型>.<ICP备案信息基本标准>.<已备案域名 ...

  7. Python Ethical Hacking - DNS Spoofing

    What is DNS Spoofing Sniff the DNSRR packet and show on the terminal. #!/usr/bin/env python from net ...

  8. Salesforce LWC学习(十九) 针对 lightning-input-field的label值重写

    本篇参考: https://salesforcediaries.com/2020/02/24/how-to-override-lightning-input-field-label-in-lightn ...

  9. npm\cnpm\yarn\tyarn 关于源和代理的问题

    npm 是一个包管理器.Node.js 自带. cnpm 是 npm 的阿里版,用的阿里源. yarn 是另一个包管理器,不自带,需要另外装.可以单独装,也可以用 npm 装. tyarn 是 yar ...

  10. JS 原型与原型链终极详解(二)

    四. __proto__ JS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__ 的内置属性,用于指向创建它的构造函数的原型对象. 对象 person1 有一个 __pr ...