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的更多相关文章

  1. POJ 2396 Budget 有上下界的网络流

    POJ 2396  Budget 题意简述:给定矩阵(每个元素都是非负整数)各行各列的和,并且限制其中的某些元素,给出一个可行解,特殊评测.矩阵规模小于200*20. 网络流的模型是显而易见的,不过对 ...

  2. POJ 2396 Budget(有源汇上下界网络流)

    Description We are supposed to make a budget proposal for this multi-site competition. The budget pr ...

  3. [poj] 2396 [zoj] 1994 budget || 有源汇的上下界可行流

    poj原题 zoj原题 //注意zoj最后一行不要多输出空行 现在要针对多赛区竞赛制定一个预算,该预算是一个行代表不同种类支出.列代表不同赛区支出的矩阵.组委会曾经开会讨论过各类支出的总和,以及各赛区 ...

  4. poj 2396 Budget 边容量有上下界的最大流

    题意: 给一个矩阵的每行和及每列和,在给一些行列或点的限制条件.求一个满足的矩阵. 分析: 转化为有上下界的网络流,注意等于也是一种上下界关系,然后用dinic算法. 代码: //poj 2396 / ...

  5. POJ 2396 Budget【网络流】

    题意: cas           //测试数据组数 n m         //行数 列数 a1 a2 ... an    //每行的和 b1 b2 ... bn   //每列的和 q       ...

  6. poj 2396 Budget

    一个m行n列的矩阵,给出每行每列中元素的和,以及对一些格子的大小限制,求一个可行方案,输出矩阵. 大小限制形如:严格大于i,严格小于i,等于i. 1<=m<=200.1<=n< ...

  7. POJ 2396 Budget (有源汇有上下界最大流)

    题意:给定一个矩阵的每行的和和每列的和,以及每个格子的限制,让你求出原矩阵. 析:把行看成X,列看成Y,其实就是二分图,然后每个X到每个Y边一条边,然后加一个超级源点和汇点分别向X和Y连边,这样就形成 ...

  8. POJ 2396 Budget ——有上下界的网络流

    给定矩阵的每行每列的和,和一些大于小于等于的限制.然后需要求出一组可行解. 上下界网络流. 大概的思想就是计算出每一个点他需要强行流入或者流出的量,然后建出超级源点和汇点,然后删除下界,就可以判断是否 ...

  9. poj 2396 Budget【有上下界的网络流】

    第一步:建立无源汇有上下界的网络模型 每行 i 作为一个点并连边(s, i, Ri, Ri),每列 j 作为一个点并连边(j, t, Cj, Cj),设 Uij, Lij 分别表示第 i 行第 j 列 ...

随机推荐

  1. [置顶] PMBOOK第四版-ITO与数据流图总结

    具体文档下载地址: 点击打开文档下载地址 :http://download.csdn.net/detail/lyjluandy/6694205 一.过程组与知识领域表(简图) 二.输入 - 工具 - ...

  2. 【Unity3D】【NGUI】UICamera

    原文:http://www.tasharen.com/forum/index.php?topic=6711.0 NGUI讨论群:333417608 概述 UICamera这个名字不是很合适,保留的原因 ...

  3. 与众不同 windows phone (13) - Background Task(后台任务)之后台文件传输(上传和下载)

    原文:与众不同 windows phone (13) - Background Task(后台任务)之后台文件传输(上传和下载) [索引页][源码下载] 与众不同 windows phone (13) ...

  4. A Very Easy Triangle Counting Game

    题意:在圆上取n个点,相邻两个点之间连线,(注意,n和1相邻),然后所有点对(i ,i+2)相连,问能形成的不同的三角形有多少个? 思路:找规律 n=3,cnt=1; n=4,cnt=8; n=5 c ...

  5. ExtJs4 笔记(2) ExtJs对js基本语法扩展支持

    本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引用加载 ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可以引入动态加载的概念来即用即取.这 ...

  6. Android学习-----如何使用sqlite对于后台数据交换,sqlite使用例程入门

     SQLite 这是一个非常流行的嵌入式数据库.它支持 SQL 查询,和只使用很少的内存.Android 在集成实施 SQLite,所以每 Android 应用程序能够使用 SQLite 数据库. ...

  7. Spring4 MVC 多文件上传(图片并展示)

    开始需要在pom.xml加入几个jar,分别是 <dependency> <groupId>commons-fileupload</groupId> <art ...

  8. Web Api集成Swagger

    WebApi集成Swagger 1.新建一个WebApi空项目 2.新建一个Person实体类: public class Person { public int ID { get; set; } p ...

  9. Python使用cx_Oracle模块连接操作Oracle数据库

    1. 简单介绍 cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包含 Oracle 9.2 10.2 以及 11.1 等版本号 2.安装 最好是去官网h ...

  10. POJ2112_Optimal Milking(网洛流最大流Dinic+最短路Flody+二分)

    解题报告 农场有k个挤奶机和c头牛,每头牛到每一台挤奶机距离不一样,每台挤奶机每天最多挤m头牛的奶. 寻找一个方案,安排每头牛到某一挤奶机挤奶,使得c头牛须要走的全部路程中的最大路程的最小值. 要使每 ...