poj 3228(二分+最大流)
题目链接: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(二分+最大流)的更多相关文章
- POJ 3228 二分最大流
题意: 给你N个位置,每个位置都有金矿数量和仓库数量,然后位置和位置之间的距离给了出来,最后问你吧所有的金矿都放到库里面走的路径 最长的最短 是多少? 思路: 比较简单的一个题, ...
- poj 2455 二分+最大流
这个因为点少用邻接矩阵做的. 题意:求由1到n的t条不重复路径中最大边权值的最小值. 思路:先对边权进行排序,然后二分边权值,建图求从1到n的最大流,当最大流为t时便求出答案. 代码: #includ ...
- POJ 2112 二分+最大流
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 17297 Accepted: 6203 ...
- POJ 2391 二分+最大流
Ombrophobic Bovines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19066 Accepted: 4 ...
- poj 2391 Ombrophobic Bovines 最短路 二分 最大流 拆点
题目链接 题意 有\(n\)个牛棚,每个牛棚初始有\(a_i\)头牛,最后能容纳\(b_i\)头牛.有\(m\)条道路,边权为走这段路所需花费的时间.问最少需要多少时间能让所有的牛都有牛棚可待? 思路 ...
- uvalive 3231 Fair Share 公平分配问题 二分+最大流 右边最多流量的结点流量尽量少。
/** 题目: uvalive 3231 Fair Share 公平分配问题 链接:https://vjudge.net/problem/UVALive-3231 题意:有m个任务,n个处理器,每个任 ...
- POJ - 2018 二分+单调子段和
依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...
- HDU3081 Marriage Match II —— 传递闭包 + 二分图最大匹配 or 传递闭包 + 二分 + 最大流
题目链接:https://vjudge.net/problem/HDU-3081 Marriage Match II Time Limit: 2000/1000 MS (Java/Others) ...
- HDU-3081-Marriage Match II 二分图匹配+并查集 OR 二分+最大流
二分+最大流: 1 //题目大意:有编号为1~n的女生和1~n的男生配对 2 // 3 //首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 4 // 5 //然后输入f组,c,d表示 ...
随机推荐
- 2 通过JNI混合使用Java和C++ -----> 访问数组
关于c和cpp实现native方法的一些注释: 1> 在jni.h中首先定义了C的实现方式,然后用内联函数实现了Cpp的实现方式,如下所示: const char* GetStringUTFC ...
- RSA和DES------加密和解密类
public class CryptogramUtil { //******************************************************************** ...
- php远程图片抓取存放到本地路径并生成缩略图
private function _getcontent($content) { $img_dir='../Public/Img/Ycimg'; //远程图片抓取存放 ...
- 解决SQLite数据库中文乱码问题
关于SQLite中出现中文乱码的分析以及解决方案 我们在使用SQLite数据库时候,可能会发现,向数据库插入数据时候显示的是汉字,但通过SQLite读出来时却显示的乱码,这是因为SQLite数据库 ...
- 寻找idea...
域名:tianhuangdilao.com 天荒地老 现在闲置,寻求好的idea...
- 《梦断代码》读书笔记第0篇——“软件时间”、“死定了”、“Agenda之魂“
第0章 软件时间 在未读这本书前,刚看到名字觉得是本讲代码的书,后来老师说是一个个的故事,这引起了我的兴趣,于是我便速速开始了第0章的阅读,读完一遍大概能读懂在讲什么,可能由于是译过来的书,书里面一 ...
- 团队作业php
<?php$kouwei=$_GET["select"];$daxiao=$_GET["RadioGroup1"];$peiliao=$_GET[&quo ...
- 监听文本框输入开发仿新浪微博限制输入字数的textarea插件
监听文本框输入 Firefox.Chrome.IE9,IE10 均支持 oninput 事件,此外所有版本的 IE 均支持 onpropertychange 事件. oninput 事件在用户输入.退 ...
- Python中数据的保存和读取
在科学计算的过程中,往往需要保存一些数据,也经常需要把保存的这些数据加载到程序中,在 Matlab 中我们可以用 save 和 lood 函数很方便的实现.类似的在 Python 中,我们可以用 nu ...
- C#制作高仿360安全卫士窗体<一>
开始写这一系列博客之前先要向大家说声抱歉,放肆雷特建立很久却很少有更新.当然博客人气也不旺,大部分都是看的人多评论收藏的人少.一直想要改变这种状态,正好赶上了最近工作上做了一个高仿360安全卫士窗体. ...