题目链接:http://poj.org/problem?id=3228

思路:增设一个超级源点和一个超级汇点,源点与每一个gold相连,容量为gold数量,汇点与仓库相连,容量为仓库的容量,然后就是二分最小的最大相邻距离,跑最大流验证即可。最大流用的是别人的Dinic模版。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define MAXN 222
#define inf 1<<30 int vs,vt;
int dep[MAXN];
int map[MAXN][MAXN]; int gold[MAXN],store[MAXN];
int dist[MAXN][MAXN];
void Build_Map(int limit,int n)
{
memset(map,,sizeof(map));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(dist[i][j]<=limit)map[i][j]=inf;
for(int i=;i<=n;i++){
map[vs][i]=gold[i];
map[i][vt]=store[i];
}
} int BFS(){
queue<int> q;
while(!q.empty())
q.pop();
memset(dep,-,sizeof(dep));
dep[vs]=;
q.push(vs);
while(!q.empty()){
int u=q.front();
q.pop();
for(int v=vs;v<=vt;v++)
if(map[u][v]> && dep[v]==-){
dep[v]=dep[u]+;
q.push(v);
}
}
return dep[vt]!=-;
} int DFS(int u,int minx){
if(u==vt)
return minx;
int tmp;
for(int v=vs;v<=vt;v++)
if(map[u][v]> && dep[v]==dep[u]+ && (tmp=DFS(v,min(minx,map[u][v])))){
map[u][v]-=tmp;
map[v][u]+=tmp;
return tmp;
}
dep[u]=-;
return ;
} int Dinic(){
int ans=,tmp;
while(BFS()){
while(){
tmp=DFS(vs,inf);
if(tmp==)
break;
ans+=tmp;
}
}
return ans;
} int main()
{
int total,n,m,a,b,c;
while(~scanf("%d",&n)){
if(n==)break;
total=,vs=,vt=n+;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
dist[i][j]=inf;
for(int i=;i<=n;i++){
scanf("%d",&gold[i]);
total+=gold[i];
}
for(int i=;i<=n;i++)scanf("%d",&store[i]);
scanf("%d",&m);
while(m--){
scanf("%d%d%d",&a,&b,&c);
dist[a][b]=dist[b][a]=c;
} int low=,high=,mid,ans=-;
while(low<=high){
mid=(low+high)>>;
Build_Map(mid,n);
if(Dinic()==total){
ans=mid;
high=mid-;
}else
low=mid+;
}
if(ans==-){
printf("No Solution\n");
}else
printf("%d\n",ans);
}
return ;
}

poj 3228(二分+最大流)的更多相关文章

  1. POJ 3228 二分最大流

    题意:       给你N个位置,每个位置都有金矿数量和仓库数量,然后位置和位置之间的距离给了出来,最后问你吧所有的金矿都放到库里面走的路径 最长的最短 是多少? 思路:      比较简单的一个题, ...

  2. poj 2455 二分+最大流

    这个因为点少用邻接矩阵做的. 题意:求由1到n的t条不重复路径中最大边权值的最小值. 思路:先对边权进行排序,然后二分边权值,建图求从1到n的最大流,当最大流为t时便求出答案. 代码: #includ ...

  3. POJ 2112 二分+最大流

    Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 17297   Accepted: 6203 ...

  4. POJ 2391 二分+最大流

    Ombrophobic Bovines Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19066   Accepted: 4 ...

  5. poj 2391 Ombrophobic Bovines 最短路 二分 最大流 拆点

    题目链接 题意 有\(n\)个牛棚,每个牛棚初始有\(a_i\)头牛,最后能容纳\(b_i\)头牛.有\(m\)条道路,边权为走这段路所需花费的时间.问最少需要多少时间能让所有的牛都有牛棚可待? 思路 ...

  6. uvalive 3231 Fair Share 公平分配问题 二分+最大流 右边最多流量的结点流量尽量少。

    /** 题目: uvalive 3231 Fair Share 公平分配问题 链接:https://vjudge.net/problem/UVALive-3231 题意:有m个任务,n个处理器,每个任 ...

  7. POJ - 2018 二分+单调子段和

    依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...

  8. HDU3081 Marriage Match II —— 传递闭包 + 二分图最大匹配 or 传递闭包 + 二分 + 最大流

    题目链接:https://vjudge.net/problem/HDU-3081 Marriage Match II Time Limit: 2000/1000 MS (Java/Others)    ...

  9. HDU-3081-Marriage Match II 二分图匹配+并查集 OR 二分+最大流

    二分+最大流: 1 //题目大意:有编号为1~n的女生和1~n的男生配对 2 // 3 //首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 4 // 5 //然后输入f组,c,d表示 ...

随机推荐

  1. hdu 2645 find the nearest station

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2645 find the nearest station Description Since dande ...

  2. Android编程: 界面组成、事件监听器

    学习知识:界面组成.事件监听器 ====界面组成==== 1.用户界面的基本组件叫做View,都是继承android.view.View类,Android里面预定义很多基本的界面组件,比如 Butto ...

  3. Labview实现脉波调制( PPM )

    Labview实现脉波调制( PPM ) 根据定义为脉冲宽度调制 生成一个正弦信号,得到其幅值输入给一个方波信号的偏移量 由于方波信号的偏移量里面含有正弦信号的信息 因此通过对方波信号的上升沿或下降沿 ...

  4. 二、secureCRT的 使用过程

    准备工作: win7与linux能互相ping通 linux安装了ssh被登陆服务 关闭window 防火墙,,控制面板 下载secureCRT 参考资料:http://zhidao.baidu.co ...

  5. < java.lang >-- StringBuffer字符串缓冲区

    构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符. 特点: 1:可以对字符串内容进行修改. 2:是一个容器. 3:是可变长度的. 4:缓冲区中可以存储任意类型的数据. 5:最终需要变成字符 ...

  6. linux matplotlib入门

    python linux matplotlib 安装:   sudo apt-get install python-numpy 必须 先安装numpy matplotlib 安装:   sudo ap ...

  7. xml之Schema架构

    1.什么是Schema架构 2.Schema文档结构  3.Schema元素类型 1>element元素 <!--简单数据:类型--> <xs:element name=&qu ...

  8. 启动级别:init 0,1,2,3,4,5,6

    这是个很久的知识点了,只是自己一直都迷迷糊糊的,今天在翻出来好好理解下.. 0:停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system 3:完全多用户 5:图形化 ...

  9. asp.net中下载文件的问题

    今天解决web的文件下载问题,下载的方法网上很多,不过我的下载有点特殊: 1.下载按钮在gridview中,是模板列的linkButton: 2.使用了ajax控件: 所以,在下载时总是报错,通过查找 ...

  10. BZOJ2752: [HAOI2012]高速公路(road)

    2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 608  Solved: 199[Submit][ ...