wya费用流
#include<bits/stdc++.h>
using namespace std; #define M 1005
#define inf 0x7fffffff
#define T 601
struct edge{int to,next,cap,val;}e[];
int n,m,t[][];
int head[M],dis[M];
int cnt=;
void add(int u,int v,int w,int q){
e[++cnt].to=v;e[cnt].next=head[u];e[cnt].cap=w;e[cnt].val=q;head[u]=cnt;
e[++cnt].to=u;e[cnt].next=head[v];e[cnt].cap=;e[cnt].val=-q;head[v]=cnt;
}
int S=,mark[M];
int ans=;
bool bfs()
{
memset(mark,,sizeof(mark));
for(int i=;i<=T;i++)dis[i]=inf;
dis[S]=;mark[S]=;
queue<int> q;
q.push(S);
while(!q.empty())
{
int now=q.front();q.pop();
for(int i=head[now];i;i=e[i].next)
if(e[i].cap&&dis[e[i].to]>dis[now]+e[i].val)
{
dis[e[i].to]=dis[now]+e[i].val;
if(!mark[e[i].to])
{mark[e[i].to]=;q.push(e[i].to);}
}
mark[now]=;
}
if(dis[T]==inf)return ;
return ;
}
int dfs(int x,int f)
{
if(x==T){mark[T]=;return f;}
int used=,w;
mark[x]=;
for(int i=head[x];i;i=e[i].next)
if(!mark[e[i].to]&&e[i].cap&&dis[x]+e[i].val==dis[e[i].to])
{
w=f-used;
w=dfs(e[i].to,min(e[i].cap,w));
ans+=w*e[i].val;
e[i].cap-=w;e[i^].cap+=w;
used+=w;if(used==f)return f;
}
return used;
}
void wya()
{
while(bfs())
{
mark[T]=;
while(mark[T])
{
memset(mark,,sizeof(mark));
dfs(,inf);
}
}
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
scanf("%d",&t[i][j]);
for(int i=;i<=n*m;i++)
add(,i,,);
for(int i=n*m+;i<=n*m+m;i++)
add(i,T,,);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
for(int k=;k<=m;k++)
add((i-)*m+j,n*m+k,,t[k][i]*j);
wya();
printf("%.2lf",(double)ans/m);
return ;
}
之前不知知道为什么都是反着写的,这会正过来也对了。也没有多玄啊。
wya费用流的更多相关文章
- hdu-5988 Coding Contest(费用流)
题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- POJ2195 Going Home[费用流|二分图最大权匹配]
Going Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22088 Accepted: 11155 Desc ...
- BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]
3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 960 Solved: 5 ...
- 洛谷 1004 dp或最大费用流
思路: dp方法: 设dp[i][j][k][l]为两条没有交叉的路径分别走到(i,j)和(k,l)处最大价值. 则转移方程为 dp[i][j][k][l]=max(dp[i-1][j][k-1][l ...
- Codeforces 730I [费用流]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给两行n个数,要求从第一行选取a个数,第二行选取b个数使得这些数加起来和最大. 限制条件是第一行选取了某个数的条件下,第二行不能选取对应位置的数. ...
- zkw费用流+当前弧优化
zkw费用流+当前弧优化 var o,v:..] of boolean; f,s,d,dis:..] of longint; next,p,c,w:..] of longint; i,j,k,l,y, ...
- 【BZOJ-4213】贪吃蛇 有上下界的费用流
4213: 贪吃蛇 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 58 Solved: 24[Submit][Status][Discuss] Desc ...
- 【BZOJ-3638&3272&3267&3502】k-Maximum Subsequence Sum 费用流构图 + 线段树手动增广
3638: Cf172 k-Maximum Subsequence Sum Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 174 Solved: 9 ...
- [bzoj4514]数字配对[费用流]
今年SDOI的题,看到他们在做,看到过了一百多个人,然后就被虐惨啦... 果然考试的时候还是打不了高端算法,调了...几天 默默地yy了一个费用流构图: 源连所有点,配对的点连啊,所有点连汇... 后 ...
随机推荐
- emlog博客插件分享openSug
emlog博客插件百度搜索下拉提示框openSug.js发布上线啦: 下载:https://www.opensug.org/faq/.../opensug.emlog_v1.0.0.zip[~4KB]
- input输入框类型
输入大小写字母.数字.下划线: <input type="text" onkeyup="this.value=this.value.replace(/[^\w_]/ ...
- 分分钟教你学习GIt
Git配置: $ git config --global user.name "awen" $ git config --global user.email "awen@ ...
- ecshop 漏洞如何修复 补丁升级与安全修复详情
目前ecshop漏洞大面积爆发,包括最新版的ecshop 3.0,ecshop 4.0,ecshop2.7.3全系列版本都存在着高危网站漏洞,导致网站被黑,被篡改,被挂马,许多商城系统深受其漏洞的攻击 ...
- Test类实验
package PC_TEST; class CPU{ int speed; CPU(){ speed=0; } CPU(int k){ speed=k; } void setSpeed(int k) ...
- linux网络服务实验
1.设置window IP地址为192.168.3.XX,掩码24位. 2.设置Linux IP地址为192.168.3.YY,掩码24位.window与Linux互相ping通. 3.在linux中 ...
- iScroll实现下拉刷新上拉加载
前言 初学iscroll这个控件,给我的一个感觉还是蛮不错的. 什么是iScroll:是目前最成熟的自定义滚动解决方案之一,在移动端和PC有很好的兼容性.iScroll官方提供了5个不同的版本 isc ...
- 一步一步学Linq to sql(四):查询句法
select 描述:查询顾客的公司名.地址信息 查询句法: var 构建匿名类型1 = from c in ctx.Customers select new { 公司名 = c.CompanyName ...
- php长整型完整输出
今天调用webservice时返回一个字段是int64 长整型 原始的数值应该是 190000002101056096 而php返回时转成 1.9000000210106E+17 当传入另一个接口就报 ...
- Linq工具篇(1)——使用LinqPad
学习Linq,有一个非常强大的工具,那就是LinqPad,具体功能有多强大就不说了,网上百度一下就可以知道,百闻不如一见,用用就知道,在网上下载一个绿色版的,无需安装,直接运行,界面如下: 具体功能, ...