网络流24题 负载平衡 费用流
来源:互联网 发布:哪些论坛分享软件 编辑:程序博客网 时间:2024/06/01 14:52
转化成供求平衡以后直接连就好了。。
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)#define T 2001using namespace std;const int inf=0x7fffffff;const int N=2005;int n,m;int head[N],q[N],dis[N],from[N],a[N];int cnt=1,sum,ans;bool vis[N];struct node{ int from,to,next,v,c;}e[100001];inline void add(int u,int v,int w,int c){ cnt++; e[cnt].from=u;e[cnt].to=v; e[cnt].v=w;e[cnt].c=c; e[cnt].next=head[u];head[u]=cnt;}inline void ins(int x,int y,int w,int c){ add(x,y,w,c); add(y,x,0,-c);}bool spfa(){ for(int i=0;i<=T;i++)dis[i]=inf; int t=0,w=1,i,now; dis[0]=q[0]=0; vis[0]=1; while(t!=w) { now=q[t];t++;if(t==2001)t=0; for(int i=head[now];i;i=e[i].next) { if(e[i].v&&dis[e[i].to]>dis[now]+e[i].c) { from[e[i].to]=i; dis[e[i].to]=dis[now]+e[i].c; if(!vis[e[i].to]) { vis[e[i].to]=1; q[w++]=e[i].to; if(w==2001)w=0; } } } vis[now]=0; } if(dis[T]==inf)return 0;return 1;}inline void mcf(){ int i,x=inf; i=from[T]; while (i) { x=min(e[i].v,x); i=from[e[i].from]; } i=from[T]; while (i) { e[i].v-=x; e[i^1].v+=x; ans+=x*e[i].c; i=from[e[i].from]; }}int main(){ scanf("%d",&n); fo(i,1,n) { scanf("%d",&a[i]); sum+=a[i]; } sum/=n; fo(i,1,n)a[i]-=sum; fo(i,1,n) { if (a[i]>0)ins(0,i,a[i],0); else ins(i+n,T,-a[i],0); } fo(i,1,n) { if (i!=1) { ins(i,i-1,inf,1); ins(i,i-1+n,inf,1); } if (i!=n) { ins(i,i+1,inf,1); ins(i,i+1+n,inf,1); } } ins(n,1,inf,1); ins(n,n+1,inf,1); ins(1,n,inf,1); ins(1,n+n,inf,1); while (spfa())mcf(); printf("%d\n",ans);}
0 0
- 网络流24题 负载平衡 费用流
- 线性规划于网络流24题之负载平衡问题 最小费用最大流
- 线性规划与网络流24题の19 负载平衡问题(最小费用最大流)
- [网络流24题] 19 负载平衡(最小代价供求,最小费用最大流)
- [网络流24题][CODEVS1916]负载平衡问题(费用流)
- 741. [网络流24题] 负载平衡 最小费用最大流/简单
- loj6013「网络流 24 题」负载平衡(费用流)
- cogs741 [网络流24题] 负载平衡
- 【网络流24题】负载平衡问题
- [网络流24题]负载平衡问题
- 【codevs1916】负载平衡问题 费用流
- 负载平衡问题(最小费用流)
- [CODEVS1916]负载平衡问题(费用流)
- 网络流24题 19负载平衡问题
- [网络流24题]code vs 1916 负载平衡问题
- 负载平衡问题[网络流24题之19]
- 线性规划与网络流24题 ---19 负载平衡问题
- 【线性规划与网络流24题 19】负载平衡问题
- Spark Hive SQL实例
- oracle定时器
- 仿ios,网易,京东的搜索界面和功能
- Synchronized——实现原理、底层优化
- ubuntu下eclipse+pydev安装
- 网络流24题 负载平衡 费用流
- linux的shell函数相关知识
- sqlserver数据库通过脚本复制数据库
- 流程行业与离散行业的差别
- Centos7.0 安装Mysql
- openssl学习
- vue移动端错误信息弹出提示
- 日常bug
- 欢迎使用CSDN-markdown编辑器