bzoj3774: 最优选择
来源:互联网 发布:苹果最新软件源 编辑:程序博客网 时间:2024/06/06 17:44
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;#define INF 0x3f3f3f3f#define maxn 222222int n,m;int a[100][100],b[100][100];int dx[]={0,0,1,-1};int dy[]={1,-1,0,0};struct node{ int v,f;}e[maxn];int q[maxn],next[maxn],first[maxn],S,T,vis[11000],en;inline int enc(int x,int y,bool b){return (x-1)*m+y+b*m*n;}void init(){ memset(first,-1,sizeof(first)); en=-1; S=m*n*2+1; T=S+1;}void add(int a,int b,int c){ en++; e[en].v=b; e[en].f=c; next[en]=first[a]; first[a]=en; en++; e[en].v=a; e[en].f=0; next[en]=first[b]; first[b]=en;}void build(){ for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if((i+j)&1) { add(S,enc(i,j,0),a[i][j]); add(enc(i,j,0),enc(i,j,1),b[i][j]); } else { add(enc(i,j,0),T,a[i][j]); add(enc(i,j,1),enc(i,j,0),b[i][j]); } for(int k=0;k<4;k++) { int xx=i+dx[k],yy=j+dy[k]; if(xx<1||xx>n||yy<1||yy>m) continue; if((i+j)&1) add(enc(i,j,1),enc(xx,yy,0),INF); else add(enc(xx,yy,0),enc(i,j,1),INF); } } } return ;}bool bfs(){ int head=0,tail=1; q[1]=S; memset(vis,-1,sizeof(vis)); vis[S]=0; while(head<tail) { head++; int now=q[head]; for(int i=first[now];~i;i=next[i]) { if(e[i].f==0||vis[e[i].v]!=-1) continue; vis[e[i].v]=vis[now]+1; if(e[i].v==T) return true; tail++; q[tail]=e[i].v; } } return false;}int dfs(int x,int f){ if(x==T||f==0) return f; int flow=0,tmp; for(int i=first[x];~i;i=next[i]) { if(e[i].f==0||vis[e[i].v]!=vis[x]+1) continue; tmp=dfs(e[i].v,min(f,e[i].f)); if(tmp) { flow+=tmp; e[i].f-=tmp; e[i^1].f+=tmp; f-=tmp; } if(!f) break; } if(!flow) vis[x]=-1; return flow;}int dinic(){ int maxflow=0,tmp=0; while(bfs()) { while(tmp=dfs(S,INF)) maxflow+=tmp; } return maxflow;}int main(){ scanf("%d%d",&n,&m); init(); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf("%d",&a[i][j]); } } int ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf("%d",&b[i][j]); ans+=b[i][j]; } } build(); printf("%d\n",ans-dinic()); return 0;}
0 0
- bzoj3774: 最优选择
- 【bzoj3774】【最优选择】【最小割】
- BZOJ3774 最优选择-最小割
- BZOJ 3774 最优选择
- MySQL 数据类型的最优选择
- MySQL数据类型的最优选择
- 数组排序,选出最优选择
- MySQL数据类型的最优选择
- 从多种解决方案中选择最优方案
- IE9在windows 7最优选择
- LibSVM最优参数选择--grid.py使用
- 【最小割】【bzoj 3774】: 最优选择
- BZOJ 3774 最优选择 最小割
- BZOJ 3774 最优选择 最小割
- 自己写的选择排序,非最优
- 【最小割】【BZOJ 3774】最优选择
- UVA1484 树形DP + 最优值选择
- 赌博的如何选择最优策略-2
- android报错:Class resolved by unexpected DEX
- [LeetCode] Two Sum
- Zedboard-Ubuntu12.04内核编译
- 基于AWS的电子商务网站架构——Web前端
- iOS 委托代理delegate设计模式
- bzoj3774: 最优选择
- Web.xml详解
- 面向对象第二课,类和对象的关系
- 启用ckeditor自带的图片上传功能
- 基本的unity shader
- 基于AWS的电子商务网站架构——结账服务
- USACO6.1.2 A Rectangular Barn(rectbarn)
- JProfiler学习笔记
- photoshop制作网页原型