cogs741 [网络流24题] 负载平衡
来源:互联网 发布:oracle查看表数据大小 编辑:程序博客网 时间:2024/05/17 09:17
不想再做费用流了呀= = 我现在写模板都有点恶心了
晚上写道树剖算了
比较简单的费用流
没有什么好说的 S向每个节点连边 容量为库存 每个节点向T连边 容量为库存的平均数
然后每个节点向相邻的节点连费用1的边
很直观对不对=A=
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int N=110*10,M=N*4,S=N-1,T=N-2,INF=1e9;int n=0;int a[N],ave=0;int head[N],next[N],to[N],from[M],cost[N],f[N],c[N],edge=0;int q[M],front=0,back=0,vis[N],fr[N],dis[N];inline void addEdge(int u,int v,int ac,int acost) { from[edge]=u,to[edge]=v,c[edge]=ac,cost[edge]=acost,next[edge]=head[u],head[u]=edge++; from[edge]=v,to[edge]=u,c[edge]=0,cost[edge]=-acost,next[edge]=head[v],head[v]=edge++;}inline void build() { for (int i=1;i<=n;++i) { addEdge(S,i,a[i],0); addEdge(i,T,ave,0); if (i!=1) addEdge(i,i-1,INF,1); else addEdge(1,n,INF,1); if (i!=n) addEdge(i,i+1,INF,1); else addEdge(n,1,INF,1); }}inline int spfa() { front=back=0; memset(vis,0,sizeof(vis)); memset(fr,-1,sizeof(fr)); for (int i=1;i<N;++i) dis[i]=INF; dis[S]=0; vis[S]=1; q[back++]=S; while (front<back) { int x=q[front++]; for (int e=head[x];~e;e=next[e]) { int v=to[e]; if (c[e]>f[e] && dis[x]+cost[e]<dis[v]) { dis[v]=dis[x]+cost[e]; fr[v]=e; if (!vis[v]) { q[back++]=v; vis[v]=1; } } } vis[x]=0; } return dis[T]!=INF;}inline int augment() { int ret=0,mnc=INF; for (int e=fr[T];~e;e=fr[from[e]]) mnc=min(mnc,c[e]-f[e]); for (int e=fr[T];~e;e=fr[from[e]]) { ret+=cost[e]*mnc; f[e]+=mnc; f[e^1]-=mnc; } return ret;}inline int mcf() { int ret=0; while (spfa()) ret+=augment(); return ret;}int main(void) { freopen("overload.in","r",stdin); freopen("overload.out","w",stdout); scanf("%d",&n); for (int i=1;i<=n;++i) { scanf("%d",a+i); ave+=a[i]; } ave/=n; memset(head,-1,sizeof(head)); build(); printf("%d\n",mcf()); fclose(stdin); fclose(stdout); return 0;}
0 0
- cogs741 [网络流24题] 负载平衡
- 【网络流24题】负载平衡问题
- [网络流24题]负载平衡问题
- 网络流24题 负载平衡 费用流
- 网络流24题 19负载平衡问题
- [网络流24题]code vs 1916 负载平衡问题
- 负载平衡问题[网络流24题之19]
- 线性规划与网络流24题 ---19 负载平衡问题
- 【线性规划与网络流24题 19】负载平衡问题
- 【codevs1916】[网络流24题]负载平衡问题
- 网络流24题19. 负载平衡问题
- cogs 741. [网络流24题] 负载平衡
- 「网络流 24 题」负载平衡
- 线性规划与网络流24——负载平衡问题
- 线性规划于网络流24题之负载平衡问题 最小费用最大流
- 线性规划与网络流24题の19 负载平衡问题(最小费用最大流)
- [网络流24题] 19 负载平衡(最小代价供求,最小费用最大流)
- [网络流24题][CODEVS1916]负载平衡问题(费用流)
- Dubbox 基本特性之异步调用
- READING NOTE: Convolutional Pose Machines
- Java多线程编程
- 字符串反转
- JavaScript继承详解(六)
- cogs741 [网络流24题] 负载平衡
- 【Video】我国研发出Heiro网络流媒体 可实现高速直播
- IOS和Android图标尺寸
- [转] Qt多线程的正确用法
- NSString 类的常用方法(两个类方法和四个对象方法)
- Sharp Development添加语言支持
- spring整合ActiveMQ
- 插件
- AngularJS中checkbox是否选中的绑定变量问题