二分最大的边的cap,记作Lim。

把所有的边的cap设为min(Lim,cap[i])。

Bob一定会把单位费用加到最大边上。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #include<queue>
  5. #include<cmath>
  6. using namespace std;
  7. #define EPS 0.000001
  8. #define N 101
  9. #define INF 2147483647.0
  10. #define M 1001
  11. typedef double db;
  12. int n,m,K,S,T;
  13. int v[M<<1],next[M<<1],first[N],en;
  14. db cap[M<<1];
  15. void AddEdge(int U,int V,db Cap)
  16. {
  17. v[en]=V; cap[en]=Cap; next[en]=first[U]; first[U]=en++;
  18. v[en]=U; cap[en]=0; next[en]=first[V]; first[V]=en++;
  19. }
  20. queue<int>q;
  21. int d[N],cur[N];
  22. bool bfs()
  23. {
  24. memset(d,-1,sizeof(int)*(n+1));
  25. d[S]=0; q.push(S);
  26. while(!q.empty())
  27. {
  28. int U=q.front(); q.pop();
  29. for(int i=first[U];i!=-1;i=next[i])
  30. if(d[v[i]]==-1&&cap[i]>EPS)
  31. {
  32. d[v[i]]=d[U]+1;
  33. q.push(v[i]);
  34. }
  35. }
  36. return d[T]!=-1;
  37. }
  38. db dfs(int U,db a)
  39. {
  40. if(U==T||a<=EPS) return a;
  41. db Flow=0.0,f;
  42. for(int &i=cur[U];i!=-1;i=next[i])
  43. if(d[v[i]]==d[U]+1&&(f=(dfs(v[i],min(a,cap[i]))))>EPS)
  44. {
  45. cap[i]-=f;
  46. cap[i^1]+=f;
  47. Flow+=f;
  48. a-=f;
  49. if(a<=EPS)
  50. break;
  51. }
  52. if(Flow<=EPS) d[U]=-1;
  53. return Flow;
  54. }
  55. db MaxFlow()
  56. {
  57. db Flow=0.0,tmp;
  58. while(bfs())
  59. {
  60. memcpy(cur,first,sizeof(int)*(n+1));
  61. while((tmp=dfs(S,INF))>EPS) Flow+=tmp;
  62. }
  63. return Flow;
  64. }
  65. int xs[M],ys[M],zs[M];
  66. int ChuShi;
  67. bool check(db Lim)
  68. {
  69. memset(first,-1,sizeof(int)*(n+1));
  70. en=0;
  71. for(int i=1;i<=m;++i)
  72. AddEdge(xs[i],ys[i],min((db)zs[i],Lim));
  73. db t=MaxFlow();
  74. return fabs(t-(db)ChuShi)<=EPS?1:0;
  75. }
  76. int main()
  77. {
  78. // freopen("bzoj3130.in","r",stdin);
  79. db r=0.0,l=0.0;
  80. scanf("%d%d%d",&n,&m,&K);
  81. S=1; T=n;
  82. memset(first,-1,sizeof(int)*(n+1));
  83. for(int i=1;i<=m;++i)
  84. {
  85. scanf("%d%d%d",&xs[i],&ys[i],&zs[i]);
  86. AddEdge(xs[i],ys[i],(db)zs[i]);
  87. r=max(r,(db)zs[i]);
  88. }
  89. ChuShi=(int)MaxFlow();
  90. while(r-l>EPS)
  91. {
  92. db mid=(l+r)/2.0;
  93. if(check(mid)) r=mid-EPS;
  94. else l=mid+EPS;
  95. }
  96. printf("%d\n%.4lf\n",ChuShi,l*(db)K);
  97. return 0;
  98. }

【二分答案】【最大流】bzoj3130 [Sdoi2013]费用流的更多相关文章

  1. BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]

    3130: [Sdoi2013]费用流 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 960  Solved: 5 ...

  2. bzoj千题计划133:bzoj3130: [Sdoi2013]费用流

    http://www.lydsy.com/JudgeOnline/problem.php?id=3130 第一问就是个最大流 第二问: Bob希望总费用尽量大,那肯定是把所有的花费加到流量最大的那一条 ...

  3. BZOJ3130 [Sdoi2013]费用流 【网络流 + 二分】

    题目 Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络流方案必须满足:(1)每 ...

  4. BZOJ3130: [Sdoi2013]费用流(二分,最大流)

    Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识.    最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络 ...

  5. BZOJ3130 [Sdoi2013]费用流

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3130 这题codevs上也有,不过数据挂了[要A得看discuss]. 题目大意: Ali ...

  6. 【BZOJ3130】费用流(最大流,二分)

    [BZOJ3130]费用流(最大流,二分) 题面 Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一 ...

  7. BZOJ 3130: [Sdoi2013]费用流 网络流+二分

    3130: [Sdoi2013]费用流 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1230  Solved: ...

  8. P3305 [SDOI2013]费用流

    题目描述 Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量. 一个合法的网络流方案必须满足: ...

  9. luogu P3305 [SDOI2013]费用流

    题目链接 bz似乎挂了... luogu P3305 [SDOI2013]费用流 题解 dalao告诉我,这题 似乎很水.... 懂了题目大意就可以随便切了 问1,最大流 问2,二分最大边权求,che ...

随机推荐

  1. nc用法小记

    By francis_hao    Jun 30,2017   ncat:连接和重定向套接字 概要 ncat [OPTIONS...] [hostname] [port]   描述 ncat 是一个集 ...

  2. How to reclaim space in InnoDB when innodb_file_per_table is ON

    When innodb_file_per_table is OFF and all data is going to be stored in ibdata files. If you drop so ...

  3. bzoj 4879 失控的数位板 4881 线段游戏 贪心,瞎搞

    [Lydsy1705月赛]失控的数位板 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 148  Solved: 33[Submit][Status][ ...

  4. 解读python小练习

    1.新建一个函数,判断是不是int 类型,并测试,不是抛出错误def adder(x, y):"""Return x + y if they are both integ ...

  5. AWS CLI command example

    1.list ec2 instance-id, instance status, type, ip address, name aws ec2 describe-instances --query ' ...

  6. ppk和pem证书互转

    首先你得去下载个putty pem:通用证书格式 ppk:为putty下面的专有格式     pem->ppk 直接通过putty下的puttygen.exe 选的Load private ke ...

  7. 关于控制下拉框select只读的js控制

    文本框有readonly属性,直接设置:下拉框没有readonly属性,也不能通过其他属性进行只读的设置,下拉框只有disabled属性,但是这个属性设成true之后,值就获取不到了: 我在网上搜了一 ...

  8. 通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题

    通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题:用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_si ...

  9. windows下mysql 5.7的配置全过程

    这是一套在好多次的安装下总结出来的经验,包括很多种遇到的问题,查过很多资料,特此总结一下. 一.从官网下载MySQL的zip(免安装的) 解压mysql-5.7.11-winx64.zip到自己指定的 ...

  10. 卡片选项页面 JTabbedPane 的使用

    package first; import javax.swing.*; import java.awt.*; import java.awt.event.*; class TtpDemo exten ...