1. //以行列建点,伞兵位置为单向边-利用对数将乘积转加法
  2. //最小割转最大流
  3. //Time:63Ms Memory:792K
  4. #include<iostream>
  5. #include<cstring>
  6. #include<cstdio>
  7. #include<cmath>
  8. #include<algorithm>
  9. #include<queue>
  10. using namespace std;
  11.  
  12. #define MAXN 105
  13. #define INF 100000
  14. #define EPS 1e-7
  15.  
  16. int n,m,p;
  17. int s,t;
  18. double res[MAXN][MAXN];
  19. int pre[MAXN];
  20.  
  21. bool bfs()
  22. {
  23. memset(pre,-1,sizeof(pre));
  24. queue<int> q;
  25. q.push(s); pre[s] = 0;
  26. while(!q.empty()){
  27. int cur = q.front();
  28. q.pop();
  29. for(int i = 1; i <= t; i++)
  30. {
  31. if(pre[i] == -1 && res[cur][i] > EPS)
  32. {
  33. pre[i] = cur;
  34. if(i == t) return true;
  35. q.push(i);
  36. }
  37. }
  38. }
  39. return false;
  40. }
  41.  
  42. double EK()
  43. {
  44. double maxFlow = 0;
  45. while(bfs()){
  46. double mind = INF;
  47. for(int i = t; i != s; i = pre[i])
  48. mind = min(mind, res[pre[i]][i]);
  49. for(int i = t; i != s; i = pre[i])
  50. {
  51. res[pre[i]][i] -= mind;
  52. res[i][pre[i]] += mind;
  53. }
  54. maxFlow += mind;
  55. }
  56. return maxFlow;
  57. }
  58.  
  59. int main()
  60. {
  61. //freopen("in.txt", "r", stdin);
  62.  
  63. int T;
  64. scanf("%d",&T);
  65. while(T--){
  66. memset(res,0,sizeof(res));
  67. scanf("%d%d%d", &n,&m,&p);
  68. s = 0; t = n + m + 1;
  69. double c;
  70. for(int i = 1; i <= n; i++)
  71. {
  72. scanf("%lf", &c);
  73. res[s][i] = log(c); //乘法转为加法
  74. }
  75. for(int i = 1; i <= m; i++)
  76. {
  77. scanf("%lf", &c);
  78. res[i+n][t] = log(c);
  79. }
  80. for(int i = 1; i <= p; i++)
  81. {
  82. int rr,cc;
  83. scanf("%d%d", &rr,&cc);
  84. res[rr][cc+n] = INF;
  85. }
  86.  
  87. printf("%.4f\n", exp(EK())); //恢复
  88.  
  89. }
  90.  
  91. return 0;
  92. }

ACM/ICPC 之 伞兵-最小割转最大流(POJ3308)的更多相关文章

  1. 【Luogu】P2057善意的投票(最小割转最大流)

    题目链接 也算水题一道吧,不过Round1感性理解一下就xjb建了个图,40 Round2仔细分析了一会,理性建了个图,90 然后分析了半天……改大数组就A了…… 从S到所有值为1的点连一条inf的边 ...

  2. HDU4289 Control —— 最小割、最大流 、拆点

    题目链接:https://vjudge.net/problem/HDU-4289 Control Time Limit: 2000/1000 MS (Java/Others)    Memory Li ...

  3. nyoj 667 碟战 最小割(最大流)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=677 题意转化:将点0与所有的有间谍的点相连,则题意变为求点0到点n的最小割,直接套最大流 ...

  4. [洛谷]P3729 曼哈顿计划EX(最小割树/等价流树)

    题目大意:给出一张n个点m条边的无向图,每个点有点权,q次询问,每次给出k,要求选出若干个点点权之和不小于k,求一个最大的值x,使得选出的点中任意两点之间至少有x条互不相交的链.(n<=550, ...

  5. BZOJ.3532.[SDOI2014]LIS(最小割ISAP 退流)

    BZOJ 洛谷 \(LIS\)..经典模型? 令\(f_i\)表示以\(i\)结尾的\(LIS\)长度. 如果\(f_i=1\),连边\((S,i,INF)\):如果\(f_i=\max\limits ...

  6. [bzoj3532][Sdoi2014]Lis——拆点最小割+字典序+退流

    题目大意 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci.请删除若 干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案. 如果有多种方案,请输出将删去项的附加属性 ...

  7. 【Luogu】P2598狼和羊的故事(最小割转最大流)

    题目链接 最小割水题.入点向白点连边,白点向白点.黑点和空点连边,空点向空点和黑点连边,黑点向黑点和汇点连边.然后跑最大流即可. 话说Fd最近怎么光做水题啊……一点用都没有……qwq 我太菜了,做完一 ...

  8. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  9. hdu3491最小割转最大流+拆点

    题意:求最小割,即求最大流即可.此题之关键为拆点(限制在点),每条边都是双向边,注意一下. 未1A原因:在拆点之后添加边的过程中,要注意,出去的是i`,进来的是i,!!所以,写addegde函数时候 ...

随机推荐

  1. 大流量网站性能优化:一步一步打造一个适合自己的BigRender插件

    BigRender 当一个网站越来越庞大,加载速度越来越慢的时候,开发者们不得不对其进行优化,谁愿意访问一个需要等待 10 秒,20 秒才能出现的网页呢? 常见的也是相对简单易行的一个优化方案是 图片 ...

  2. win8安装SQL Server 2005问题解决方法

    win8安装SQL Server 2005问题解决方法 1.正常安装任一版本的SQL Server 2005(最好安装企业版). 2.安装到SqlServer服务的时候提示启动服务失败(提示重试的时候 ...

  3. 聚类算法:K-means

    2013-12-13 20:00:58    Yanjun K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离 ...

  4. 创建django项目

    python /usr/local/lib/python3.4/dist-packages/Django-1.9.10-py3.4.egg/django/bin/django-admin.py sta ...

  5. 计算机中位(bit), 字节(byte), 字(word)的关系

    1.位(bit) 来自英文bit,音译为“比特”,表示二进制位.位是计算机内部数据储存的最小单位,11010100是一个8位二进制数.一个二进制位只可以表示0和1两种状态(21):两个二进制位可以表示 ...

  6. Java中使用Jedis操作Redis(转载)

    整理 1.字符串 添加:set keyname value 查询:get keyname 拼接:append keyname value 删除:del keyname 添加多个: mset keyna ...

  7. 根据浏览器显示界面大小变换,替换css文件方法

    在1024屏幕下,选择适配1024屏幕的css文件, 在大于1024屏幕下,选择适配大屏幕的css文件. 在html中的head标签中引用css文件时,加入media属性. 例: <link r ...

  8. 没有为 COM 互操作注册程序集 请使用 regasm.exe /tlb 注册该程序集——解决办法

    错误现象: 错误 6 没有为 COM 互操作注册程序集“DevExpress.Utils.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToke ...

  9. 负载均衡的几种算法Java实现代码

    轮询 package class2.zookeeper.loadbalance; import java.util.ArrayList; import java.util.HashMap; impor ...

  10. 新手指南: Linux 新手应该知道的 26 个命令

    当你进入了 Linux 的世界,在下载.安装 了某个 Linux 发行版,体验了 Linux 桌面并安装了一些你喜爱和需要的软件之后,应该去了解下 Linux 真正的魅力所在:命令行.每一个 Linu ...