这个题看起来很难,但分析一下还是很简单的

Alice的操作是根据Bob来的,而Bob又是知道这个方案的

所以需要考虑对于一个固定的方案,Bob必然怎么加,来确定Alice的方案

然后发现,对于当前割集,在分配费用的时候,都加在经过次数最多的一条边上是最优的(若a>b   则p1*a+p2*a>p1*a+p2*b)

然后就变成了只限制最大经过次数的网络流

然后二分这个次数就可以了  检验就是是否改变了最大流的答案

注:隐含条件坑爹,流动的时候可以是小数作为流量,所以必须实数二分

码:

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<cmath>
using namespace std;
#define N 10000
#define inf 1000000009
int hou[N],d[N],yuan[N],zhong[N],xia[N],z[N],qi[N],ll[N],tot=-1,s,t,n,m,i,j;
double v[N],l,r,ans,p;
queue<int>q;
void jian(int a,int b,double c)
{++tot;hou[tot]=yuan[a];zhong[tot]=b,yuan[a]=tot,v[tot]=c;
}
void jia(int a,int b,double c)
{jian(a,b,c);jian(b,a,0);
}
bool bfs()
{
int i;
memset(d,0x7f,sizeof(d));
for(i=1;i<=t;i++)
xia[i]=yuan[i];
d[s]=0;
q.push(s);while(!q.empty())
{int st=q.front();q.pop();for(i=xia[st];i!=-1;i=hou[i]){int nd=zhong[i];if(fabs(v[i]-0)<=0.000001||d[nd]<inf)continue;d[nd]=d[st]+1;q.push(nd);}
}   return d[t]<inf;
}
double dfs(int o,int t,double limit)
{if(!limit||o==t)return limit;int i;double f,flow=0;for(i=xia[o];i!=-1;i=hou[i]){xia[o]=i;int nd=zhong[i];if(d[nd]==d[o]+1&&fabs((f=dfs(nd,t,min(limit,v[i])))-0)>0.000001){flow+=f;limit-=f;v[i]-=f;v[i^1]+=f;if(fabs(limit-0)<=0.000001)break;       }       }   return flow;
}
double dinic()
{double daan=0;while(bfs()){daan+=dfs(s,t,inf);} return daan;
}
int main()
{scanf("%d%d%lf",&n,&m,&p);memset(yuan,-1,sizeof(yuan));for(i=1;i<=m;i++){scanf("%d%d%d",&qi[i],&z[i],&ll[i]);       }for(i=1;i<=m;i++){jia(qi[i],z[i],ll[i]);            }s=1;t=n;int daan=dinic();l=0.00001;r=50005;while(l+0.000001<r){   double mid=(l+r)/2;tot=-1;   memset(yuan,-1,sizeof(yuan));for(i=1;i<=m;i++){jia(qi[i],z[i],min(1.00000*ll[i],mid));           }   if(fabs(dinic()-daan)<=0.000001){r=mid;ans=mid;}else l=mid+0.00001; }printf("%d\n%.5lf",daan,double(ans*p));
}

bzoj3130 [SDOI2013]费用流 结论+二分答案+网络流检验相关推荐

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

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

  2. bzoj3993 [SDOI2015]星际战争 二分答案+网络流检验

    流量分配模型. 这个题如果时间不知道的话流量是未知的,对于流量未知的网络流肯定是没法做的(没有动态借流量的网络流) 由于时间上满足连续性,就可以二分答案,然后流量确定就可以跑网络流 主要还是化静为动 ...

  3. 洛谷 P1800 software_NOI导刊2010提高(06)(二分答案+DP检验)

    P1800 software_NOI导刊2010提高(06) 标签 二分答案 难度 普及/提高- 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每 ...

  4. BZOJ 3993 Luogu P3324 [SDOI2015]星际战争 (最大流、二分答案)

    字符串终于告一段落了! 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3993 (luogu) https://www.l ...

  5. bzoj4819 [Sdoi2017]新生舞会 分数规划(实数二分)+网络流检验

    这个题其实就是二分检验.. 稍微移个项就可以得到(a1-c*b1)+(a2-c*b2)+-- 这样贡献就化成了具体到每次决策的影响,c显然满足连续性,所以可以二分c 跑最大流以求得到最大的值使当前答案 ...

  6. 网络流 最大流 最小割 费用流

    [腾讯文档]网络流初步 网络流初步 文章目录 网络流初步 一.网络流简介 1. 网络 2. 流 3. 再次理解网络流 二.常见题型(三种) 三.相关问题对应算法介绍 1.最大流 (1) FF算法 - ...

  7. CodeForces 164C Machine Programming 费用流

    Machine Programming 题目连接: http://codeforces.com/problemset/problem/164/B Descriptionww.co One remark ...

  8. BZOJ 4819 Luogu P3705 [SDOI2017]新生舞会 (最大费用最大流、二分、分数规划)

    现在怎么做的题都这么水了.. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4819 (luogu) https://ww ...

  9. 【HDU - 3081】Marriage Match II(网络流最大流,二分+网络流)

    题干: Presumably, you all have known the question of stable marriage match. A girl will choose a boy; ...

最新文章

  1. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)
  2. 紫书 习题7-14 UVa 307(暴搜+剪枝)
  3. mysql死锁检测算法_MySQL 8 死锁检测脚本
  4. 双循环格局对话国际农民丰收节交易会 谋定农业贸易高质量
  5. 计算机组成 指令扩展,计算机组成原理课程设计--指令扩展设计.doc
  6. 海马扫描Linux,海马扫描-海马扫描下载 v1.2.0官方版-完美下载
  7. Qt5.7 win10环境 调试器未设置问题解决
  8. 分布式系统研发初体验
  9. 处理 Archlinux 报错
  10. 【Linux】文件操作函数(系统调用函数)
  11. 小牛电动为何沉迷于打造“社区文化”?
  12. php中可以给class添加click,jQuery addClass()方法添加class
  13. 2008-2020年800+商业银行财务面板数据
  14. 跨国企业在中国 | 葛兰素史克与阿里健康签署联合商业计划;上海迪士尼举办首届“国际美食趴”...
  15. python3.6.国家政策文本分析代码
  16. 《Python编程从入门到实践》16.2.6收盘价均值,代码理解
  17. vue npm install --save-dev css-loader出现的错误
  18. European Journal of Operational Research 2023年第307卷第1期论文目录
  19. 练习题之金融应用:比较不同利率下的贷款
  20. 第一部分 利用opencv基于hsv颜色的目标提取效果和python代码

热门文章

  1. c语言中用gaminv,轻松上手游泳模式,用Garmin腕表一定要知道的五件事
  2. python和pycharm怎么安装_Python3和PyCharm安装与环境配置【图文教程】
  3. mysql count 1_高性能MySQL count(1)与count(*)的差别
  4. 推荐系统实战-概念理解入门篇
  5. TikZ学习笔记番外篇: 使用tikzcd包绘制交换图
  6. ES6_对象简洁语法_note
  7. 怎么把打开方式改回计算机程序,电脑打开方式改变了,怎么还原
  8. 产生随机小数_如果取到小数区间内的任一数字?
  9. java每轮排序结果_【算法队列面试题】面试问题:java选择题… - 看准网
  10. 启动chrome_Chrome开启多线程下载的方法