AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3130

这题codevs上也有,不过数据挂了[要A得看discuss]。

题目大意:

Alice来弄一条最大流,Bob来给Alice弄好的最大流定权值。

定权值的方法是给没条边定一个值wi,然后wi*flow(i)的和就是总的费用,但要求所有wi之和为p。

现在Bob希望最后的费用最大,即对于每一种最大流方案都会有一种最大的定值方案。

Alice则希望花费最小,即选出一种最大流方案,使得这种方案的最大定值是所有最大流方案中最小的。

求最大流,及这个最小的最大定值。

首先我们先从Bob的角度出发。

怎么给一种最大流方案定值就能最大呢?

显然是给最大流中流量最大的边订上p的值就可以了。

因为最后也是加法,然后满足分配率,然后随便证一下,感受一下就是对的了。

然后从Alice的角度来想,恩不就是让流量最大的边最小么?...

然后就限制流量跑最大流啊,如果和原来相同就可以了。

这个流量限制就是典型的二分咯...不过注意往常的网络流都是跑整数流量,但是这题不是,我们要实数二分最大流量

因为往常边都是整数的边,最大流跑整数的一定可以跑出来,不过现在毕竟限流的情况,那么我们要跑小数咯...

如果你还不信,给你一个样例好了[来自ZYF-ZYF]:

所以呢= =大家注意精度控制好了...不懂看看代码也行。

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm> using namespace std; const int maxn=;
const int maxm=;
const int INF=0x3f3f3f3f;
const double eps=1e-; struct Node{
int data,next;
double low;
}node[maxm<<]; #define now node[point].data
#define www node[point].low
#define then node[point].next struct Edge{
int u,v;
double w;
}edge[maxm]; int n,m,p,cnt;
int s,t;
double ans;
int dis[maxn],que[maxn];
int head[maxn],cur[maxn]; void add(int u,int v,double w){
node[cnt].data=v;node[cnt].next=head[u];node[cnt].low=w;head[u]=cnt++;
node[cnt].data=u;node[cnt].next=head[v];node[cnt].low=;head[v]=cnt++;
} bool BFS(){
memset(dis,-,sizeof(dis));
int H=,T=;que[]=;dis[]=;
while(H<T){
H++;
for(int point=head[que[H]];point!=-;point=then)
if(www>eps && dis[now]<){
dis[now]=dis[que[H]]+;
que[++T]=now;
}
}
return dis[t]>;
} double dfs(int x,double low){
if(x==t) return low;
double Low;
for(int &point=cur[x];point!=-;point=then)
if(www>eps && dis[now]==dis[x]+){
Low=dfs(now,min(low,www));
if(Low>eps){
www-=Low,node[point^].low+=Low;
return Low;
}
}
return ;
} double check(double mid){
cnt=;
for(int i=;i<=n;i++) head[i]=-;
for(int i=;i<=m;i++)
add(edge[i].u,edge[i].v,min(edge[i].w,mid)); double flag,sum=;
while(BFS()){
memcpy(cur,head,sizeof(head));
while((flag=dfs(s,INF))>eps)
sum+=flag;
}
return sum;
} int main(){
#ifndef ONLINE_JUDGE
freopen("3130.in","r",stdin);
freopen("3130.out","w",stdout);
#endif
int u,v,w;
double l=,r=,mid; scanf("%d%d%d",&n,&m,&p);
s=,t=n;
for(int i=;i<=n;i++) head[i]=-;
for(int i=;i<=m;i++)
scanf("%d%d%lf",&edge[i].u,&edge[i].v,&edge[i].w),r=max(r,edge[i].w); ans=check(r);
while(r-l>eps){
mid=(l+r)/;
if(fabs(ans-check(mid))<eps) r=mid;
else l=mid;
} printf("%.0lf\n%.5lf",ans,l*p); return ;
}

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]费用流

    二分最大的边的cap,记作Lim. 把所有的边的cap设为min(Lim,cap[i]). Bob一定会把单位费用加到最大边上. #include<cstdio> #include< ...

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

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

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

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

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

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

  7. P3305 [SDOI2013]费用流

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

  8. luogu P3305 [SDOI2013]费用流

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

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

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

随机推荐

  1. Asp.net从文件夹中读取图片,随机背景图

    第一步:配置文件web.config里添加 <system.web><connectionStrings> <!--name 是自定义的,connectionString ...

  2. 银河英雄传说 (codevs 1540) 题解

    [问题描述] 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰 ...

  3. Wordpress模板标签大全

    Wordpress模板基本文件 style.css 样式表文件 index.php 主页文件 single.php 日志单页文件 page.php 页面文件 archvie.php 分类和日期存档页文 ...

  4. 西门子SIMATIC IT平台

    西门子公司的SIMATIC IT平台基于ANSI/ISA S95标准开发,包含的功能组件覆盖了ISA S95规定的生产业务操作模型,同时也满足MESA所确定的MES系统11项功能要求. SIMATIC ...

  5. 05-树8 File Transfer

    并查集 简单并查集:输入N,代表有编号为1.2.3……N电脑.下标从1开始.初始化为-1.合并后根为负数,负数代表根,其绝对值代表个数. We have a network of computers ...

  6. ASP.NET Core文章汇总

    现有Asp.Net Core 文章资料,2016 3-20月汇总如下 ASP.NET Core 1.0 与 .NET Core 1.0 基础概述 http://www.cnblogs.com/Irvi ...

  7. Python多版本安装 Python2.7和Python3.5

    声明:本文仅仅在win8.1测试通过! 1.下载 Python2.7,3.5 2.依次安装Python27(c:\Python27)  Python35(c:\Python35) 3.c:\Pytho ...

  8. debian完整部署 Nginx + uWSGI + Django

    手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...

  9. js的reduce方法,改变头等函数

    头等函数:把编程变成了类似搭积木的方式编码,可以使用很少的代码,实现强大的功能函数. eg: getTotal:数组的求和运算. var myArray = [1,2,3,4]; var add = ...

  10. [quote ]ffmpeg, gstreamer, Raspberry Pi, Windows Desktop streaming

    [quote ]ffmpeg, gstreamer, Raspberry Pi, Windows Desktop streaming http://blog.pi3g.com/2013/08/ffmp ...