UVA-11082 Matrix Decompressing(有上下界的最大流)
题目链接:
题意:
给一个矩阵的每行和每列的和,(给的是前i行或者列的和);
矩阵中每个元素的值在1到20之间,找出这样的一个矩阵;
思路:
把它转化成一个二分图,每行和每列之间连一条弧,然后设置一个源点和一个汇点,源点与行点相连,汇点与列点相连,求一个最大值,当然这是一个有下界的最大流,需要做-1的处理,同时与源汇相连的边也是要处理的;最后求得的反向边+1就是答案了;
AC代码:
- #include <bits/stdc++.h>
- /*#include <iostream>
- #include <queue>
- #include <cmath>
- #include <cstring>
- #include <algorithm>
- #include <cstdio>
- */
- using namespace std;
- #define Riep(n) for(int i=1;i<=n;i++)
- #define Riop(n) for(int i=0;i<n;i++)
- #define Rjep(n) for(int j=1;j<=n;j++)
- #define Rjop(n) for(int j=0;j<n;j++)
- #define mst(ss,b) memset(ss,b,sizeof(ss));
- typedef long long LL;
- const LL mod=1e9+;
- const double PI=acos(-1.0);
- const int inf=0x3f3f3f3f;
- const int N=1e5+;
- int n,m,a[],b[],cap[][],path[],flow[];
- queue<int>qu;
- int bfs()
- {
- mst(path,-);
- flow[]=inf;
- path[]=;
- qu.push();
- while(!qu.empty())
- {
- int fr=qu.front();
- qu.pop();
- for(int i=;i<=n+m+;i++)
- {
- if(path[i]==-&&cap[fr][i])
- {
- flow[i]=min(cap[fr][i],flow[fr]);
- path[i]=fr;
- qu.push(i);
- }
- }
- }
- if(path[n+m+]==-)return -;
- return flow[n+m+];
- }
- void maxflow()
- {
- int now,pre;
- while()
- {
- int temp=bfs();
- if(temp==-)break;
- now=n+m+;
- while(now!=)
- {
- pre=path[now];
- cap[pre][now]-=temp;
- cap[now][pre]+=temp;
- now=pre;
- }
- }
- }
- int main()
- {
- int t,Case=;
- scanf("%d",&t);
- while(Case<=t)
- {
- mst(cap,);
- scanf("%d%d",&n,&m);
- Riep(n)scanf("%d",&a[i]);
- Riep(n)
- {
- cap[][i]=a[i]-a[i-]-m;
- }
- Riep(m)scanf("%d",&b[i]);
- Riep(m)
- {
- cap[i+n][n+m+]=b[i]-b[i-]-n;
- }
- for(int i=;i<=n;i++)
- for(int j=;j<=m;j++)
- cap[i][j+n]=;
- maxflow();
- printf("Matrix %d\n",Case++);
- Riep(n)
- {
- Rjep(m-)
- printf("%d ",cap[j+n][i]+);
- printf("%d\n",cap[m+n][i]+);
- }
- printf("\n");
- }
- return ;
- }
UVA-11082 Matrix Decompressing(有上下界的最大流)的更多相关文章
- UVa 11082 Matrix Decompressing(最大流)
不想吐槽了..sample input 和sample output 完全对不上...调了一个晚上...不想说什么了... -------------------------------------- ...
- UVA - 11082 Matrix Decompressing
2. B - Matrix Decompressing 题意:定义一个R*C的正整数矩阵(1<=R,C<=20),设Ai为前i行所有元素之和,Bi为前i列所有元素之和. 题目已知R,C和数 ...
- [题解]UVa 11082 Matrix Decompressing
开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...
- UVa 11082 Matrix Decompressing - 网络流
开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...
- UVa 11082 - Matrix Decompressing(最大流)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA - 11082 Matrix Decompressing (最大流,技巧)
很经典的网络流模型,行编号和列编号分别看成一个点,行和列和分别看出容量,一个点(x,y)看出是一条边,边的容量下界是1,所以先减去1,之后在加上就好了. 建图的时候注意分配好编号,解从残留网络中的边找 ...
- UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
题意: 知道矩阵的前i行之和,和前j列之和(任意i和j都可以).求这个矩阵.每个格子中的元素必须在1~20之间.矩阵大小上限20*20. 思路: 这么也想不到用网络流解决,这个模型很不错.假设这个矩阵 ...
- UVA - 11082 Matrix Decompressing(最大流+行列模型)
题目大意:给出一个R行C列的矩阵,如今给出他的前1-R行和 && 前1-C列和,问这个矩阵原来是如何的,要求每一个元素大小在1-20之间 解题思路:将每一行连接到超级源点,容量为该行的 ...
- uva 11082 Matrix Decompressing 【 最大流 】
只看题目的话~~怎么也看不出来是网络流的题目的说啊~~~~ 建图好神奇~~ 最开始不懂---后来看了一下这篇-- http://www.cnblogs.com/AOQNRMGYXLMV/p/42807 ...
随机推荐
- hdu4862 2014多校B题/ 费用流(最优情况下用不大于K条路径覆盖)(不同的解法)
题意: 一个数字矩阵,可以出发K次,每次可以从右边或者下面走,要求(在收益最大情况下)覆盖全图,不能则输出-1.(规则:每次跳一步的时候若格子数字相等则获得该数字的能量,每跳一步消耗距离的能量).每个 ...
- POJ2752 NEXT[J]特性应用利用。
题意:求一个字符串所有的前缀和后缀相同的情况,每个情况输出长度,如 ababcababababcabab :2 4 9 18 思路:next数组应用,利用j=nxet[i],i之前与开头相同的字符串长 ...
- DTD概述
1. 什么是XML文件 可扩展标记语言,标准通用标记语言的子集,是用于标记电子文件使其具有结构性的标记语言. 2. 什么是dtd文件 DTD(文档类型定义)的作用是定义XML文档的合法构建模块.它使用 ...
- JS标签获取另一个页面传过来的href值
a href=b.html?id=楼主>B页面</a>b.html中的获取函数:function getParam(){C1=window.location.href.split(& ...
- Jquery表单序列化和json操作
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- IIS Express 的怪毛病 vs2013本机调试
本机调试时,如果同一个项目有多个版本,同时debug,可能会串项目调试,造成不必要的困扰: 通常情况下是 IIS express的映射出现了问题: 解决方案: 1.打开目录:查看文件C:\Users\ ...
- JS实现根据密码长度 显示安全条
原文:http://www.open-open.com/code/view/1431324883763 //根据密码长度显示安全条 <ul class="clear"> ...
- 【Mybatis】 Mybatis在xml文件中处理大于号小于号的方法【问题】
处理大于小于号的方法: https://www.cnblogs.com/winner-0715/p/6132755.html 第一种方法:用转义字符把">"和"&l ...
- 更改Tomcat命令行窗体标题
在windows下启动多个tomcat时.不好区分哪个tomcat相应哪个服务,能够通过下面方法设置Tomcat命令行窗体的标题: 1.在%tomcat_home%\bin\catalina.b ...
- 关于 thinkPHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback 关于thinkPHP rpc调 ...