题意:给出一个矩阵前i列所有元素的和,和前j行所有元素的和,求这个矩阵解压以后的原型。(答案不唯一)

n,m<=20,1<=a[i,j]<=20

思路:这道题把边上的流量作为原先矩阵中的点

把每一行,每一列都看成一个点

S——>i行 a[i]-m

i行——>j列 19

j列——>T b[i]-n

跑最大流,边(i,j+n)上的流量就是a[i,j]的值

为什么容量是a[i]-m,19,b[i]-n?

因为点权(边权)不能为0,所以要先把所有值+1,上限就-1,输出的时候+1即可

  1. var fan:array[..]of longint;
  2. head,vet,next,len,gap,dis,a,b,c1,c2:array[..]of longint;
  3. num:array[..,..]of longint;
  4. n,m,i,j,tot,s,source,src,cas,v:longint;
  5.  
  6. procedure add(a,b,c:longint);
  7. begin
  8. inc(tot);
  9. next[tot]:=head[a];
  10. vet[tot]:=b;
  11. len[tot]:=c;
  12. head[a]:=tot;
  13.  
  14. inc(tot);
  15. next[tot]:=head[b];
  16. vet[tot]:=a;
  17. len[tot]:=;
  18. head[b]:=tot;
  19. end;
  20.  
  21. function min(x,y:longint):longint;
  22. begin
  23. if x<y then exit(x);
  24. exit(y);
  25. end;
  26.  
  27. function dfs(u,aug:longint):longint;
  28. var e,v,t,flow,val:longint;
  29. begin
  30. if u=src then exit(aug);
  31. e:=head[u]; flow:=; val:=s-;
  32. while e<> do
  33. begin
  34. v:=vet[e];
  35. if len[e]> then
  36. begin
  37. if dis[u]=dis[v]+ then
  38. begin
  39. t:=dfs(v,min(len[e],aug-flow));
  40. len[e]:=len[e]-t;
  41. len[fan[e]]:=len[fan[e]]+t;
  42. flow:=flow+t;
  43. if dis[source]>=s then exit(flow);
  44. if aug=flow then break;
  45. end;
  46. val:=min(val,dis[v]);
  47. end;
  48. e:=next[e];
  49. end;
  50. if flow= then
  51. begin
  52. dec(gap[dis[u]]);
  53. if gap[dis[u]]= then dis[source]:=s;
  54. dis[u]:=val+;
  55. inc(gap[dis[u]]);
  56. end;
  57. exit(flow);
  58. end;
  59.  
  60. function maxflow:longint;
  61. var ans:longint;
  62. begin
  63. fillchar(gap,sizeof(gap),);
  64. fillchar(dis,sizeof(dis),);
  65. gap[]:=s; ans:=;
  66. while dis[source]<s do ans:=ans+dfs(source,maxlongint);
  67. exit(ans);
  68. end;
  69.  
  70. begin
  71. assign(input,'UVA11082.in'); reset(input);
  72. assign(output,'UVA11082.out'); rewrite(output);
  73. for i:= to do
  74. if i mod = then fan[i]:=i+
  75. else fan[i]:=i-;
  76. readln(cas);
  77. for v:= to cas do
  78. begin
  79. fillchar(head,sizeof(head),); tot:=;
  80. fillchar(num,sizeof(num),);
  81. fillchar(len,sizeof(len),);
  82. readln(n,m);
  83. for i:= to n do
  84. begin
  85. read(a[i]); c1[i]:=a[i]-a[i-];
  86. end;
  87. for i:= to m do
  88. begin
  89. read(b[i]); c2[i]:=b[i]-b[i-];
  90. end;
  91. s:=n+m+; source:=n+m+; src:=n+m+;
  92. for i:= to n do add(source,i,c1[i]-m);
  93. for i:= to m do add(i+n,src,c2[i]-n);
  94. for i:= to n do
  95. for j:= to m do
  96. begin
  97. num[i,j]:=tot+;
  98. add(i,j+n,);
  99. end;
  100. maxflow;
  101. writeln('Matrix ',v);
  102. for i:= to n do
  103. begin
  104. for j:= to m- do write(len[num[i,j]]+,' ');
  105. write(len[num[i,m]]+);
  106. writeln;
  107. end;
  108. if v<>cas then writeln;
  109. end;
  110.  
  111. close(input);
  112. close(output);
  113. end.

【UVA11082】Matrix Decompressing(有上下界的网络流)的更多相关文章

  1. UVA-11082 Matrix Decompressing(有上下界的最大流)

    题目链接: Matrix Decompressing 题意: 给一个矩阵的每行和每列的和,(给的是前i行或者列的和); 矩阵中每个元素的值在1到20之间,找出这样的一个矩阵: 思路: 把它转化成一个二 ...

  2. ACM/ICPC 之 有流量上下界的网络流-Dinic(可做模板)(POJ2396)

    //有流量上下界的网络流 //Time:47Ms Memory:1788K #include<iostream> #include<cstring> #include<c ...

  3. SGU 194. Reactor Cooling(无源汇有上下界的网络流)

    时间限制:0.5s 空间限制:6M 题意: 显然就是求一个无源汇有上下界的网络流的可行流的问题 Solution: 没什么好说的,直接判定可行流,输出就好了 code /* 无汇源有上下界的网络流 * ...

  4. 【ZOJ2314】Reactor Cooling(有上下界的网络流)

    前言 话说有上下界的网络流好像全机房就我一个人会手动滑稽,当然这是不可能的 Solution 其实这道题目就是一道板子题,主要讲解一下怎么做无源无汇的上下界最大流: 算法步骤 1.将每条边转换成0~u ...

  5. ZOJ 2314 有上下界的网络流

    problemCode=2314">点击打开链接 题意:给定m条边和n个节点.每条边最少的流量和最多的流量.保证每一个节点的出入流量和相等,问能够形成吗,能够则输出每条边的流量 思路: ...

  6. poj_2396 有上下界的网络流

    题目大意 一个mxn的矩阵,给出矩阵中每一行的和sh[1,2...m]以及每一列的数字的和目sv[1,2...n],以及矩阵中的一些元素的范围限制,比如a[1][2] > 1, a[2][3] ...

  7. 【BZOJ2502】清理雪道 有上下界的网络流 最小流

    [BZOJ2502]清理雪道 Description        滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降 ...

  8. 【2018沈阳赛区网络预选赛J题】Fantastic Graph 【有上下界的网络流】

    要补的题太多了导致最近没写博客(好吧是我懒) 题目链接https://nanti.jisuanke.com/t/31447 题意 给出一个二分图,问能否挑选出一些边,使得每个点的度数都在[L,R]这个 ...

  9. UVA11082 Matrix Decompressing 最大流建模解矩阵,经典

    /** 题目:UVA11082 Matrix Decompressing 链接:https://vjudge.net/problem/UVA-11082 题意:lrj入门经典P374 已知一个矩阵的行 ...

  10. ZOJ2314 Reactor Cooling(有上下界的网络流)

    The terrorist group leaded by a well known international terrorist Ben Bladen is buliding a nuclear ...

随机推荐

  1. 模拟下载的进度条ProgressBar

    作者:堕落的天使 图片效果 activity_main.xml(代码) <RelativeLayout xmlns:android="http://schemas.android.co ...

  2. Spring对 JDBC 的支持,JdbcTemplate类的使用

    导包:spring框架的包 和 连接数据库连接池的c3p0包 连接mysql数据库的包; 在src目录下建立jdbc.properties文件:存放连接数据库的属性值 jdbc.user=root j ...

  3. Linux CentOS6.8下解压安装mysql-5.7.14完整介绍

    环境:centos6.8 32位本教程安装MySQL是通过编译过的二进制文件进行安装.是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件1.下载 http://dev.m ...

  4. Java中serialVersionUID

    报错信息如下: Adds a default serial version ID to the selected type. Use this option to add a user-defined ...

  5. EI目录下载地址及保护密码

    EI目录下载地址:http://www.elsevier.com/solutions/engineering-village/content EI工作薄保护密码:AAAAABABAABD

  6. 怎么解决svn清理失败且路径显示乱码问题

    http://jingyan.baidu.com/article/295430f1d728830c7e0050f9.html 上面这个网址是百度经验给的方法,我也是参照这个方式解决了问题,虽然是解决了 ...

  7. Django URL的命令空间

    为避免在模板中使用URL的硬编码,可以使用{% url %}模板标签来解决 <li><a href="/task/{{ task.id }}/">{{ ta ...

  8. Modified Least Square Method and Ransan Method to Fit Circle from Data

    In OpenCv, it only provide the function fitEllipse to fit Ellipse, but doesn't provide function to f ...

  9. VMware 虚拟机桥接网络设置

    一.桥接的基本原理    配置成桥接网络连接模式的虚拟机就当作主机所在以太网的一部分,虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑,可以像主机一样可以访问以太网中的所有共享资源和网络连 ...

  10. highcharts 柱状图 动态加载

    highcharts柱状图动态加载 (1):导入样式 <script type="text/javascript" src="<%=request.getCo ...