2245: [SDOI2011]工作安排 费用流
2016-01-22 19:51
441 查看
为什么SDOI原来都是考裸题。。qwq
直接根据题意连边跑费用流。。
直接根据题意连边跑费用流。。
#include<iostream> #include<cstdio> #include<cstring> #define inf 1000000007 #define M 505 #define ll long long using namespace std; ll ans; int n,m,T,cnt=1; int head[505],dis[505],q[505],path[505],t[205],w[205]; int next[130005],list[130005],from[130005],flow[130005],cost[130005]; bool vis[505]; inline int read() { int a=0,f=1; char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();} while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();} return a*f; } inline void insert(int x,int y,int z,int w) { next[++cnt]=head[x]; head[x]=cnt; from[cnt]=x; list[cnt]=y; flow[cnt]=z; cost[cnt]=w; } inline bool spfa() { for (int i=0;i<=T;i++) dis[i]=inf; dis[0]=0; vis[0]=1; q[1]=0; int t=0,w=1,x; while (t!=w) { t=(t+1)%M; x=q[t]; for (int i=head[x];i;i=next[i]) if (flow[i]&&dis[list[i]]>dis[x]+cost[i]) { dis[list[i]]=dis[x]+cost[i]; path[list[i]]=i; if (!vis[list[i]]) { vis[list[i]]=1; w=(w+1)%M; q[w]=list[i]; } } vis[x]=0; } return dis[T]!=inf; } inline void mcf() { int x=inf; for (int i=path[T];i;i=path[from[i]]) x=min(x,flow[i]); for (int i=path[T];i;i=path[from[i]]) ans+=x*cost[i],flow[i]-=x,flow[i^1]+=x; } int main() { m=read(); n=read(); T=n+m+1; for (int i=1;i<=n;i++) { int x=read(); insert(0,i,x,0); insert(i,0,0,0); } for (int i=1;i<=m;i++) for (int j=1;j<=n;j++) { int x=read(); if (x) insert(j,n+i,inf,0),insert(n+i,j,0,0); } for (int i=1;i<=m;i++) { int s=read(); for (int j=1;j<=s;j++) t[j]=read(); t[++s]=inf; for (int j=1;j<=s;j++) w[j]=read(); for (int j=1;j<=s;j++) insert(n+i,T,t[j]-t[j-1],w[j]),insert(T,n+i,0,-w[j]); } while (spfa()) mcf(); cout << ans << endl; return 0; }
相关文章推荐
- 【材料课堂】锂电池基础
- 编码运行两不误!KZPlayground,Objective-C中的Playgrounds
- php sleep函数延迟执行
- php手册 0 == 'all'
- ZOJ2112 Dynamic Rankings 动态区间Kth(单点修改) 线段树+Treap写法
- 例题 3-6 环状序列
- RGB 常用颜色对照表
- 改良程序的11技巧
- 链表
- 参数的排列组合
- 小希的迷宫(并查集问题)
- LeetCode Wildcard Matching
- linux LTC qt安装步骤
- 安装yii2框架时出现InvalidArgumentException错误
- LeetCode Valid Number
- LeetCode: Unique Binary Search Trees [095]
- 往github上传demo
- CKEditor使用总结(持续更新)
- 煲耳机,看到一篇文章分享下
- 《剑指offer》 学习笔记(一)