poj Budget
Budget
建图好题。不知道为什么提交一直TLE。
然后。该了几次,看了别人的普通网络流都过了。
我觉得可能是卡DINIC的某些部分吧。这题就是一道普通的上下界最小流。
建图麻烦,所以说一下建图吧。
建图能够象方格取数的方法一样,把行列拆了。然后最后让行总和或列总和等于题目的要求。这样在满足一下题目的上下界要求后图就建好了。跑两边最大流就Ok了。
由于,一直TLE所以不给出完整代码。仅仅给出建图过程。囧。。。
int main()
{
int T;
scanf("%d\n",&T);
while(T--){
char ope[5];
int x,y,c; scanf("%d%d\n",&N,&M); init();
memset(in,0,sizeof(in)); for(int i = 1;i <= N;++i){
for(int j = 1;j <= M;++j){
B[i][j] = 0;
C[i][j] = INF;
}
} for(int i = 1;i <= N;++i){ //行
scanf("%d",&c); addEdge(ss,i,0);
in[ss] -= c;
in[i] += c;
} for(int j = 1;j <= M;++j){ //列
scanf("%d",&c); addEdge(j+N,tt,0);
in[j + N] -= c;
in[tt] += c;
} int cas;
scanf("%d",&cas);
while(cas--){
scanf("%d%d%s%d",&x,&y,ope,&c);
if(c < 0){
flag = true;
}
int x1,x2,y1,y2;
x1 = x2 = x;
y1 = y2 = y;
if(!x) x1 = 1,x2 = N;
if(!y) y1 = 1,y2 = M;
for(int i = x1;i <= x2;++i){
for(int j = y1;j <= y2;++j){
if(ope[0] == '=')
B[i][j] = C[i][j] = c;
else if(ope[0] == '>')
B[i][j] = max(B[i][j],c + 1);
else
C[i][j] = min(C[i][j],c - 1);
if(C[i][j] < B[i][j])
flag = false;
}
}
} if(flag){
puts("IMPOSSIBLE");
if(T)puts("");
continue;
} //建图
for(int i = 1;i <= N;++i){
for(int j = 1;j <= M;++j){
addEdge(i,j + N,C[i][j] - B[i][j]);
in[i] -= B[i][j];
in[j+N] += B[i][j];
}
} int sum = 0;
for(int i = 1;i <= tt;++i){
if(in[i] > 0){
sum += in[i];
addEdge(src,i,in[i]);
}
if(in[i] < 0){
addEdge(i,sink,-in[i]);
}
} addEdge(tt,ss,INF); ///!!!!!!!!!! tt --> ss 不要在粗心了!!! T_T
int flow = maxFlow(src,sink); if(flow != sum){
puts("IMPOSSIBLE");
} else {
maxFlow(src,sink);
}
if(T)puts("");
}
return 0;
}
poj Budget的更多相关文章
- POJ 2396 Budget 有上下界的网络流
POJ 2396 Budget 题意简述:给定矩阵(每个元素都是非负整数)各行各列的和,并且限制其中的某些元素,给出一个可行解,特殊评测.矩阵规模小于200*20. 网络流的模型是显而易见的,不过对 ...
- POJ 2396 Budget(有源汇上下界网络流)
Description We are supposed to make a budget proposal for this multi-site competition. The budget pr ...
- [poj] 2396 [zoj] 1994 budget || 有源汇的上下界可行流
poj原题 zoj原题 //注意zoj最后一行不要多输出空行 现在要针对多赛区竞赛制定一个预算,该预算是一个行代表不同种类支出.列代表不同赛区支出的矩阵.组委会曾经开会讨论过各类支出的总和,以及各赛区 ...
- poj 2396 Budget 边容量有上下界的最大流
题意: 给一个矩阵的每行和及每列和,在给一些行列或点的限制条件.求一个满足的矩阵. 分析: 转化为有上下界的网络流,注意等于也是一种上下界关系,然后用dinic算法. 代码: //poj 2396 / ...
- POJ 2396 Budget【网络流】
题意: cas //测试数据组数 n m //行数 列数 a1 a2 ... an //每行的和 b1 b2 ... bn //每列的和 q ...
- poj 2396 Budget
一个m行n列的矩阵,给出每行每列中元素的和,以及对一些格子的大小限制,求一个可行方案,输出矩阵. 大小限制形如:严格大于i,严格小于i,等于i. 1<=m<=200.1<=n< ...
- POJ 2396 Budget (有源汇有上下界最大流)
题意:给定一个矩阵的每行的和和每列的和,以及每个格子的限制,让你求出原矩阵. 析:把行看成X,列看成Y,其实就是二分图,然后每个X到每个Y边一条边,然后加一个超级源点和汇点分别向X和Y连边,这样就形成 ...
- POJ 2396 Budget ——有上下界的网络流
给定矩阵的每行每列的和,和一些大于小于等于的限制.然后需要求出一组可行解. 上下界网络流. 大概的思想就是计算出每一个点他需要强行流入或者流出的量,然后建出超级源点和汇点,然后删除下界,就可以判断是否 ...
- poj 2396 Budget【有上下界的网络流】
第一步:建立无源汇有上下界的网络模型 每行 i 作为一个点并连边(s, i, Ri, Ri),每列 j 作为一个点并连边(j, t, Cj, Cj),设 Uij, Lij 分别表示第 i 行第 j 列 ...
随机推荐
- ASIO攻破!!!----转
from:http://www.cppblog.com/shanoa/archive/2009/06/26/88606.aspx 花了足足3天时间,外加1天心情休整,终于在第5天编写出了一个能运行的基 ...
- NetBeans + Xdebug 调试WordPress
用NetBeans进行WordPress的相关开发和定制很顺手,配合Xdebug后调试起来也很方便. 详细配置过程如下(本例中Xampp安装目录为D:\xampp): 1: 下载xdebug(版本需匹 ...
- UVA 565 565 Pizza Anyone? (深搜 +位运算)
Pizza Anyone? You are responsible for ordering a large pizza for you and your friends. Each of th ...
- hdu1695(莫比乌斯)或欧拉函数+容斥
题意:求1-b和1-d之内各选一个数组成数对.问最大公约数为k的数对有多少个,数对是有序的.(b,d,k<=100000) 解法1: 这个能够简化成1-b/k 和1-d/k 的互质有序数对的个数 ...
- STL algorithm算法lower_bound和upper_bound(31)
lower_bound原型: function template <algorithm> std::lower_bound default (1) template <class F ...
- Haproxy+Keepalived搭建Weblogic高可用负载均衡集群
配置环境说明: KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G 系统盘20G cpu 4核 Haproxy keepalived 2台 192.168.1.10 192 ...
- Windows DIB文件操作具体解释-5.DIB和调色板
Windows调色板是256色显卡时期的产物,如今显卡最少也是16bit的了.所以调色板基本上是用不到了的. 可是以下几种情况还是须要去使用和了解调色板: 1.在新显卡上保证256色兼容模式的正常执行 ...
- IT痴汉的工作现状18-思维定式
前阵子周权出差给我带回来一个净水器,是直接安装在水龙头上的,小巧方便.我依照安装说明一步一步组装好了,感觉说明书还是比較靠谱的,没有遇到意外.但我发现它的净水.原水的button好像是有问题.它的结构 ...
- html中的table在android端显示
转载请注明出处:http://blog.csdn.net/u012338845/article/details/46773245 開始都是用Html.fromHtml(source).来显示html的 ...
- 近期在调用 calendar.js 的时候出现中文乱码! 解决方式
近期写一个小项目的时候:在调用 calendar.js 的时候出现中文乱码! 如图所看到的: 原因在于: 我的jsp 页面,指定的是 UTF-8 编码,然而,调用的 calendar.js 的编码确 ...