【BZOJ3894】文理分科 最小割 (再不刷它就土了,毕竟水题)
来源:互联网 发布:菠萝饭软件网页 编辑:程序博客网 时间:2024/04/28 15:38
#include <stdio.h>int main(){ puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/43968955");}
啦啦啦啦Markdown啊
啦啦啦啦怎么用啊
啦啦啦啦公式板啊
还是别用Markdown啦
呜啊~~
上面的自己唱出来的留言板举爪~
好了,说题解。
嗯自己看代码build部分吧,就是这么的暴力!
#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define P 120#define N 30005#define M 300000 // 14*10000#define inf 0x3f3f3f3fusing namespace std;const int dx[]={0,0,0,1,-1};const int dy[]={0,1,-1,0,0};struct KSD{ int v,len,next;}e[M];int head[N],cnt;inline void add(int u,int v,int len){ e[++cnt].v=v; e[cnt].len=len; e[cnt].next=head[u]; head[u]=cnt;}inline void Add(int u,int v,int len){add(u,v,len),add(v,u,0);}int s,t,d[N];queue<int>q;bool bfs(){ while(!q.empty())q.pop(); memset(d,0,sizeof d); int i,u,v; q.push(s),d[s]=1; while(!q.empty()) { u=q.front(),q.pop(); for(i=head[u];i;i=e[i].next) { if(!d[v=e[i].v]&&e[i].len) { d[v]=d[u]+1; if(v==t)return 1; q.push(v); } } } return 0;}int dinic(int x,int flow){ if(x==t)return flow; int remain=flow,i,v,k; for(i=head[x];i&&remain;i=e[i].next) { if(d[v=e[i].v]==d[x]+1&&e[i].len) { k=dinic(v,min(remain,e[i].len)); if(!k)d[v]=0; e[i].len-=k,e[i^1].len+=k; remain-=k; } } return flow-remain;}int n,m,maxflow;int id[P][P];void build(){ int i,j,k; int a,b,c; scanf("%d%d",&n,&m); for(i=1;i<=n;i++)for(j=1;j<=m;j++)id[i][j]=++cnt; s=cnt*3+1,t=cnt*3+2,cnt=1; for(i=1;i<=n;i++)for(j=1;j<=m;j++) // 文科喜悦值 { scanf("%d",&c); Add(s,id[i][j],c); maxflow+=c; } for(i=1;i<=n;i++)for(j=1;j<=m;j++) // 理科喜悦值 { scanf("%d",&c); Add(id[i][j],t,c); maxflow+=c; } for(i=1;i<=n;i++)for(j=1;j<=m;j++) // 同文喜悦值 { scanf("%d",&c); Add(s,id[i][j]+n*m,c); for(k=0;k<=4;k++)if(id[a=i+dx[k]][b=j+dy[k]]) Add(id[i][j]+n*m,id[a][b],inf); maxflow+=c; } for(i=1;i<=n;i++)for(j=1;j<=m;j++) // 同理喜悦值 { scanf("%d",&c); Add(id[i][j]+2*n*m,t,c); for(k=0;k<=4;k++)if(id[a=i+dx[k]][b=j+dy[k]]) Add(id[a][b],id[i][j]+2*n*m,inf); maxflow+=c; }}int main(){ freopen("test.in","r",stdin); build(); while(bfs())maxflow-=dinic(s,inf); printf("%d\n",maxflow); return 0;}
^%^%$^%
1 0
- 【BZOJ3894】文理分科 最小割 (再不刷它就土了,毕竟水题)
- 【bzoj3894】文理分科 最小割
- [BZOJ3894]文理分科 最小割
- BZOJ3894文理分科-最小割
- [bzoj3894]文理分科 最小割
- bzoj3894 文理分科(网络流最小割)
- bzoj3894: 文理分科
- BZOJ3894文理分科
- BZOJ3894: 文理分科
- 【bzoj3894】文理分科
- bzoj3894: 文理分科
- bzoj3894: 文理分科
- BZOJ 3894 文理分科 最小割
- BZOJ 3894 文理分科 最小割
- 【最小割】【bzoj 3894】: 文理分科
- BZOJ 3894 文理分科 最小割
- bzoj 3894: 文理分科 最小割
- bzoj 3894: 文理分科(最小割)
- C - ACboy needs your help again!
- 2014-2015年度总结
- android开发混淆文件proguard.cfg详解
- 一些自己工作中常用但容易混淆或忘记的HTML标签属性用法,在此做个小总结
- 完全升级OTA包的制作流程(上)
- 【BZOJ3894】文理分科 最小割 (再不刷它就土了,毕竟水题)
- 安卓教程:查看已保存的WIFI密码
- 基于hadoop2.6+java6+centos6.5 64位+VMware9 源码安装hadoop沙盘环境(一)
- ssh无密码登录远程主机执行特定命令的注意事项
- Apache Curator Node Cache Watcher
- sqllite数据库简单使用
- iOS static标识
- Objective-C Runtime
- 学习资料导航