【bzoj3894】文理分科 网路流
【bzoj3894】文理分科
Description
Input
Output
Sample Input
13 2 4 13
7 13 8 12
18 17 0 58 13 15 4
11 3 8 11
11 18 6 51 2 3 4
4 2 3 2
3 1 0 4
3 2 3 2
0 2 2 1
0 2 4 4
Sample Output
HINT
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue> #define inf 1000000007
#define N 30007
#define M 1000007
using namespace std;
const int xx[]={,,-,,};
const int yy[]={,,,,-};
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if (ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
} int n,m,S,T,ans;
int cnt=,hed[N],cur[N],nxt[M],rea[M],val[M];
int dis[N]; void add(int u,int v,int w)
{
nxt[++cnt]=hed[u];
hed[u]=cnt;
rea[cnt]=v;
val[cnt]=w;
}
void add_two_edge(int u,int v,int w)
{
add(u,v,w),add(v,u,);
}
bool bfs()
{
for (int i=S;i<=T;i++)dis[i]=-;
dis[S]=;queue<int>q;q.push(S);
while(!q.empty())
{
int u=q.front();q.pop();
for (int i=hed[u];i!=-;i=nxt[i])
{
int v=rea[i],fee=val[i];
if (dis[v]!=-||fee==)continue;
dis[v]=dis[u]+;
if (v==T)return ;
q.push(v);
}
}
return ;
}
int dfs(int u,int MX)
{
if (u==T||MX==) return MX;
int res=;
for (int i=cur[u];i!=-;i=nxt[i])
{
int v=rea[i],fee=val[i];
if (dis[v]!=dis[u]+)continue;
int x=dfs(v,min(MX,fee));
cur[u]=i,res+=x,MX-=x;
val[i]-=x,val[i^]+=x;
if (!MX)break;
}
if (!res) dis[u]=-;
return res;
}
int dinic()
{
int res=;
while(bfs())
{
// cout<<1<<endl;
for (int i=S;i<=T;i++)cur[i]=hed[i];
res+=dfs(S,inf);
}
return res;
}
int main()
{
memset(hed,-,sizeof(hed));
n=read(),m=read(),S=,T=n*m*+;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
{
int x=read();ans+=x;
add_two_edge(S,(i-)*m+j,x);
}
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
{
int x=read();ans+=x;
add_two_edge((i-)*m+j,T,x);
}
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
{
int x=read();ans+=x;
for (int k=;k<;k++)
{
int lx=i+xx[k],ly=j+yy[k];
if (lx<||lx>n||ly<||ly>m)continue;
add_two_edge((i-)*m+j+n*m,(lx-)*m+ly,inf);
}
add_two_edge(S,(i-)*m+j+n*m,x);
}
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
{
int x=read();ans+=x;
for (int k=;k<;k++)
{
int lx=i+xx[k],ly=j+yy[k];
if (lx<||lx>n||ly<||ly>m)continue;
add_two_edge((lx-)*m+ly,(i-)*m+j+*n*m,inf);
}
add_two_edge((i-)*m+j+*n*m,T,x);
}
ans-=dinic();
printf("%d\n",ans);
}
【bzoj3894】文理分科 网路流的更多相关文章
- [bzoj3894]文理分科_网络流_最小割
文理分科 bzoj-3894 题目大意:题目链接. 注释:略. 想法: 这种题也是一种套路. 我们新建一个点表示收益点. 然后把所有的收益都加一起,求最小割表示代价即可. Code: #include ...
- Bzoj3894 文理分科
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 667 Solved: 389 Description 文理分科是一件很纠结的事情!(虽然看到这个题 ...
- BZOJ3894文理分科——最小割
题目描述 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行 描述,每个格子代表一个同学的座位.每位同学必须从 ...
- [Bzoj3894]文理分科(最小割)
Description 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行描述,每个格子代表一个同学的座位.每位 ...
- bzoj3894: 文理分科(还是那道最小割)
3894: 文理分科 题目:传送门 感谢波老师没有来D飞我,让我做出了这题... 题解: 这题其实和我做的上一题(bzoj2132)很像,所以就不写题意了. 依然是那最小割... 这题给出了四个利益矩 ...
- 【题解】 bzoj3894: 文理分科 (网络流/最小割)
bzoj3894,懒得复制题面,戳我戳我 Solution: 首先这是一个网络流,应该还比较好想,主要就是考虑建图了. 我们来分析下题面,因为一个人要么选文科要么选理科,相当于两条流里面割掉一条(怎么 ...
- [BZOJ3894]文理分科(最小割)
(1) 对每个位置建一个点F1,S向这个点连art[i][j]的边,这个点向T连science[i][j]的边. (2) 对每个位置再建一个点F2,S向这个点连same_art[i][j]的边,这个点 ...
- BZOJ3894:文理分科(最大流)(同BZoj3438)
文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行 描述,每个格子代表一个同学的座位.每位同学必须从文科和理科中选 ...
- 【BZOJ3894】文理分科(最小割)
[BZOJ3894]文理分科(最小割) 题面 BZOJ Description 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过) 小P所在的班级要进行文理分科.他的班级可以用一个 ...
随机推荐
- Nginx学习记录(一)
1. 什么是nginx Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支 ...
- 两种简单的servlet实现反向代理
以下两种方法都需要引入jar包: <dependency> <groupId>org.mitre.dsmiley.httpproxy</groupId> <a ...
- idea右侧的工具栏不见,包括maven以及其他
通用,设置后右侧工具栏可见 可以通过view-->windows tool看到maven的
- Oracle Undo 和 Redo
1. REDO(重做信息) Redo log file(重做日志文件),是数据库的事务日志. Oracle维护着两类重做日志文件:在线(online)重做日志文件和归档(archived)重做日志文件 ...
- 第十四篇、OC_新闻查看器
PageTitleView: #import <UIKit/UIKit.h> @class GFBPageTitleView; @protocol GFBPageTitleViewDele ...
- 牛客小白月赛5 A 无关(relationship) 【容斥原理】【数据范围处理】
题目链接:https://www.nowcoder.com/acm/contest/135/A 题目描述 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关. 给出一个含有k个元素的 ...
- 2018.11.5 Nescafe26 T1 小猫爬山
题目 题目描述 Freda 和 rainbow 饲养了 N 只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们 终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). Fre ...
- (76)zabbix_agentd.conf配置文件详解
############ GENERAL PARAMETERS ################# ### Option: PidFile# Name of PID file.# Agent PID文 ...
- java中的访问修饰符 (2013-10-11-163 写的日志迁移
访问级别 修饰符 同类 同包 子类 ...
- django_数据库操作—增、删、改、查
增加 增加数据有两种方法 1> sava >>> from datetime import date >>> book = BookInfo( btitle= ...