【二分答案】【最大流】bzoj3130 [Sdoi2013]费用流
二分最大的边的cap,记作Lim。
把所有的边的cap设为min(Lim,cap[i])。
Bob一定会把单位费用加到最大边上。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define EPS 0.000001
#define N 101
#define INF 2147483647.0
#define M 1001
typedef double db;
int n,m,K,S,T;
int v[M<<1],next[M<<1],first[N],en;
db cap[M<<1];
void AddEdge(int U,int V,db Cap)
{
v[en]=V; cap[en]=Cap; next[en]=first[U]; first[U]=en++;
v[en]=U; cap[en]=0; next[en]=first[V]; first[V]=en++;
}
queue<int>q;
int d[N],cur[N];
bool bfs()
{
memset(d,-1,sizeof(int)*(n+1));
d[S]=0; q.push(S);
while(!q.empty())
{
int U=q.front(); q.pop();
for(int i=first[U];i!=-1;i=next[i])
if(d[v[i]]==-1&&cap[i]>EPS)
{
d[v[i]]=d[U]+1;
q.push(v[i]);
}
}
return d[T]!=-1;
}
db dfs(int U,db a)
{
if(U==T||a<=EPS) return a;
db Flow=0.0,f;
for(int &i=cur[U];i!=-1;i=next[i])
if(d[v[i]]==d[U]+1&&(f=(dfs(v[i],min(a,cap[i]))))>EPS)
{
cap[i]-=f;
cap[i^1]+=f;
Flow+=f;
a-=f;
if(a<=EPS)
break;
}
if(Flow<=EPS) d[U]=-1;
return Flow;
}
db MaxFlow()
{
db Flow=0.0,tmp;
while(bfs())
{
memcpy(cur,first,sizeof(int)*(n+1));
while((tmp=dfs(S,INF))>EPS) Flow+=tmp;
}
return Flow;
}
int xs[M],ys[M],zs[M];
int ChuShi;
bool check(db Lim)
{
memset(first,-1,sizeof(int)*(n+1));
en=0;
for(int i=1;i<=m;++i)
AddEdge(xs[i],ys[i],min((db)zs[i],Lim));
db t=MaxFlow();
return fabs(t-(db)ChuShi)<=EPS?1:0;
}
int main()
{
// freopen("bzoj3130.in","r",stdin);
db r=0.0,l=0.0;
scanf("%d%d%d",&n,&m,&K);
S=1; T=n;
memset(first,-1,sizeof(int)*(n+1));
for(int i=1;i<=m;++i)
{
scanf("%d%d%d",&xs[i],&ys[i],&zs[i]);
AddEdge(xs[i],ys[i],(db)zs[i]);
r=max(r,(db)zs[i]);
}
ChuShi=(int)MaxFlow();
while(r-l>EPS)
{
db mid=(l+r)/2.0;
if(check(mid)) r=mid-EPS;
else l=mid+EPS;
}
printf("%d\n%.4lf\n",ChuShi,l*(db)K);
return 0;
}
【二分答案】【最大流】bzoj3130 [Sdoi2013]费用流的更多相关文章
- BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]
3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 960 Solved: 5 ...
- bzoj千题计划133:bzoj3130: [Sdoi2013]费用流
http://www.lydsy.com/JudgeOnline/problem.php?id=3130 第一问就是个最大流 第二问: Bob希望总费用尽量大,那肯定是把所有的花费加到流量最大的那一条 ...
- BZOJ3130 [Sdoi2013]费用流 【网络流 + 二分】
题目 Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络流方案必须满足:(1)每 ...
- BZOJ3130: [Sdoi2013]费用流(二分,最大流)
Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络 ...
- BZOJ3130 [Sdoi2013]费用流
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3130 这题codevs上也有,不过数据挂了[要A得看discuss]. 题目大意: Ali ...
- 【BZOJ3130】费用流(最大流,二分)
[BZOJ3130]费用流(最大流,二分) 题面 Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一 ...
- BZOJ 3130: [Sdoi2013]费用流 网络流+二分
3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1230 Solved: ...
- P3305 [SDOI2013]费用流
题目描述 Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量. 一个合法的网络流方案必须满足: ...
- luogu P3305 [SDOI2013]费用流
题目链接 bz似乎挂了... luogu P3305 [SDOI2013]费用流 题解 dalao告诉我,这题 似乎很水.... 懂了题目大意就可以随便切了 问1,最大流 问2,二分最大边权求,che ...
随机推荐
- 第五届华中区程序设计邀请赛暨武汉大学第十四届校赛 网络预选赛 A
Problem 1603 - Minimum Sum Time Limit: 2000MS Memory Limit: 65536KB Total Submit: 564 Accepted: ...
- 编程技巧 - malloc()与free()
1.要节省ram资源,可以使用malloc()动态申请内存,使用完再用free()释放掉,free()释放的是指针指向的内存空间,而不是指针. 2.如果某个大数组要在两个函数中使用,可以先定义一个全局 ...
- Google File System中文版
英文原文地址: Google File system 译文原文地址: The Google File System中文版 Google File System中文版 摘要 我们设计并实现了Google ...
- 在Global.asax中过滤POST请求的非法参数。
using System;using System.Collections.Generic;using System.Collections.Specialized;using System.Linq ...
- windows下maven打包eclipse工程
打包过程中,可能出现的2个问题: ①.[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build ...
- Restful 接口权限控制
前言 有人说,每个人都是平等的: 也有人说,人生来就是不平等的: 在人类社会中,并没有绝对的公平, 一件事,并不是所有人都能去做: 一样物,并不是所有人都能够拥有. 每个人都有自己的角色,每种角色都有 ...
- [object-c 2.0 程序设计]object-c review (一)
// // main.m // cmdTry // // Created by Calos Chen on 2017/8/21. // Copyright © 2017年 Calos Chen. Al ...
- phpcms v9 后台添加修改页面空白页问题解决方法
phpcms v9 添加修改页面空白页的解决方法 找一个正常运行的phpcms 将caches\caches_model\caches_data 目录下的 content_form.class.php ...
- JS组件入门
用React感觉component老好用了. 那如何用原生JS来模拟实现React中的component方法呢:http://huziketang.com/blog/posts/detail?post ...
- Educational Codeforces Round 40 A B C D E G
A. Diagonal Walking 题意 将一个序列中所有的\('RU'\)或者\('UR'\)替换成\('D'\),问最终得到的序列最短长度为多少. 思路 贪心 Code #include &l ...