[BZOJ1475]方格取数 网络流 最小割
1475: 方格取数
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 1025 Solved: 512
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 2
3 5
Sample Output
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int tx[]={,,,-};
int ty[]={,,-,};
struct data {
int to,next,f;
}e[];
int head[],cnt;
void add(int u,int v,int f){e[cnt].to=v;e[cnt].next=head[u];e[cnt].f=f;head[u]=cnt++;}
int n,m,s,t;
bool vis[];
int q[],dis[];
bool bfs() {
memset(dis,-,sizeof(dis));
int h=,tail=;
q[h]=t;
dis[t]=;
while(h!=tail) {
int now=q[h++];if(h==) h=;
for(int i=head[now];i>=;i=e[i].next) {
if(dis[e[i].to]>-||!e[i^].f) continue;
dis[e[i].to]=dis[now]-;
q[tail++]=e[i].to;if(tail==) tail=;
}
}
return dis[s]>=-;
}
int dfs(int now,int a) {
int f=,flow=;
if(now==t) return a;
for(int i=head[now];i>=;i=e[i].next) {
int to=e[i].to;
if(dis[to]==dis[now]+&&e[i].f>) {
f=dfs(to,min(a,e[i].f));
flow+=f;
e[i].f-=f;
e[i^].f+=f;
a-=f;
if(a==) break;
}
}
return flow;
}
int num=;
int ans=;
int sum=;
void dinic() {
while(bfs()) {
sum+=dfs(s,);
}
printf("%d",num-sum);
}
int tt=;
int a[][];
int main() {
memset(head,-,sizeof(head));
scanf("%d%d",&m,&n);
s=,t=;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++) {
scanf("%d",&a[i][j]);
num+=a[i][j];
}
for(int i=;i<=m;i++) {
for(int j=;j<=n;j++) {
if((i+j)&) {
add(s,(i-)*n+j,a[i][j]),add((i-)*n+j,s,);
for(int k=;k<=;k++) {
int tox=i+tx[k],toy=j+ty[k];
if(tox==||tox>m||toy==||toy>n) continue;
add((i-)*n+j,(tox-)*n+toy,1e8);
add((tox-)*n+toy,(i-)*n+j,);
}
}
else add((i-)*n+j,t,a[i][j]),add(t,(i-)*n+j,); }
}
dinic();
}
[BZOJ1475]方格取数 网络流 最小割的更多相关文章
- 【bzoj1475】方格取数 网络流最小割
题目描述 在一个n*n的方格里,每个格子里都有一个正整数.从中取出若干数,使得任意两个取出的数所在格子没有公共边,且取出的数的总和尽量大. 输入 第一行一个数n:(n<=30) 接下来n行每行n ...
- HDU 1569 方格取数(2) (最小割)
方格取数(2) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- luogu2774 [网络流24题]方格取数问题 (最小割)
常见套路:棋盘黑白染色,就变成了一张二分图 然后如果选了黑点,四周的白点就不能选了,也是最小割的套路.先把所有价值加起来,再减掉一个最少的不能选的价值,也就是割掉表示不选 建边(S,黑点i,v[i]) ...
- LuoguP2774 方格取数问题(最小割)
题目背景 none! 题目描述 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法.对于 ...
- 洛谷P2774 方格取数问题(最小割)
题意 $n \times m$的矩阵,不能取相邻的元素,问最大能取多少 Sol 首先补集转化一下:最大权值 = sum - 使图不连通的最小权值 进行黑白染色 从S向黑点连权值为点权的边 从白点向T连 ...
- BZOJ 1475: 方格取数( 网络流 )
本来想写道水题....结果调了这么久!就是一个 define 里面少加了个括号 ! 二分图最大点权独立集...黑白染色一下 , 然后建图 : S -> black_node , white_no ...
- [网络流24题#9] [cogs734] 方格取数 [网络流,最大流最小割]
将网格分为两部分,方法是黑白染色,即判断(i+j)&1即可,分开后从白色格子向黑色格子连边,每个点需要四条(边界点可能更少),也就是每个格子周围的四个方向.之后将源点和汇点分别于黑白格子连边, ...
- P2774 方格取数(网络流)
https://www.luogu.com.cn/problem/P2774 在一个有 m×n 个方格的棋盘中,每个方格中有一个正整数. 现要从方格中取数,使任意2个数所在方格没有公共边,且取出的数的 ...
- BZOJ1324Exca王者之剑&BZOJ1475方格取数——二分图最大独立集
题目描述 输入 第一行给出数字N,M代表行列数.N,M均小于等于100 下面N行M列用于描述数字矩阵 输出 输出最多可以拿到多少块宝石 样例输入 2 2 1 2 2 1 样例输出 4 题意就是 ...
随机推荐
- LoadRunner系统架构简介与运行原理
1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...
- 服务器下面的WEB-INF 不能直接访问,可以通过servlet进行访问
服务器下面的WEB-INF 不能直接访问,可以通过servlet进行访问
- 【bzoj2783】[JLOI2012]树 树上倍增
题目描述 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.节点1是根节点,根的深度是0,它的儿子节点的深度为1.路径不必一 ...
- 2018宁夏邀请赛L Continuous Intervals
题目链接:https://nanti.jisuanke.com/t/28412 题意: 给出n个数的序列.问序列中有多少个区间满足,排序完之后任意两个相邻的数之差不大于1. 题解: 用max表示区间最 ...
- PyQt5学习--基本窗口控件--QMainWindow
QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件.比如将工具栏.菜单栏和状态栏等添加到布局管理器中. 窗口类型介绍 QMainWindow.QWidget和 ...
- php: Can't use function return value in write context
关于empty()函数, php手册中提到,php5.5之前empty()函数只支持检查变量,传入任何其他的表达式或函数都会产生语法错误. Note: Prior to PHP 5.5, empty( ...
- Java之戳中痛点 - (1)易变业务使用脚本语言编写
脚本语言的3大特征: 1.灵活:脚本语言一般是动态类型,可以不声明变量类型直接使用,也可以在运行期改变类型:2.便捷:脚本语言是解释性语言,在运行期变更非常方便,而不用重启服务3.简单:脚本语言语法比 ...
- HDU 5881--Tea 思维规律
感谢http://blog.csdn.net/black_miracle/article/details/52567718 题意:有一壶水, 体积在 L和 R之间, 有两个杯子, 你要把水倒到两个杯子 ...
- Eclipse Tomcat部署项目没有加载新加的静态资源文件
额,一直用MyEclipse,后来用Eclipse时,启动项目后去Tomcat webapps找对应文件夹,发现没有,才知道Eclipse 默认不往本地Tomcat部署. 1.eclipse不像MyE ...
- codefoeces 671 problem D
D. Roads in Yusland standard output Mayor of Yusland just won the lottery and decided to spent money ...