BZOJ 1324 Exca 神剑 最小割
标题效果:鉴于加权值矩阵,带走一个地方的权利值之后,与其相邻的格儿童权利值变0。问多少可以取出到右值。
思维:Amber论文题目。不难建设,图着色。颜色从S连边,还有一种颜色向T连边。再把相邻的格子连边。之后跑最小割,用总权值减去最大流就是答案。
CODE:
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAX 400
#define MAXP 40000
#define MAXE 500010
#define INF 0x3f3f3f3f
#define S 0
#define T 39999
using namespace std;
const int dx[] = {0,1,0,-1,0};
const int dy[] = {0,0,1,0,-1}; int m,n,cnt;
int src[MAX][MAX],num[MAX][MAX]; int head[MAXP],total = 1;
int next[MAXE],aim[MAXE],flow[MAXE]; int deep[MAXP]; inline void Add(int x,int y,int f)
{
next[++total] = head[x];
aim[total] = y;
flow[total] = f;
head[x] = total;
} bool BFS()
{
static queue<int> q;
while(!q.empty()) q.pop();
memset(deep,0,sizeof(deep));
deep[S] = 1;
q.push(S);
while(!q.empty()) {
int x = q.front(); q.pop();
for(int i = head[x]; i; i = next[i])
if(flow[i] && !deep[aim[i]]) {
deep[aim[i]] = deep[x] + 1;
q.push(aim[i]);
if(aim[i] == T) return true;
}
}
return false;
} int Dinic(int x,int f)
{
if(x == T) return f;
int temp = f;
for(int i = head[x]; i; i = next[i])
if(flow[i] && deep[aim[i]] == deep[x] + 1 && temp) {
int away = Dinic(aim[i],min(temp,flow[i]));
if(!away) deep[aim[i]] = 0;
flow[i] -= away;
flow[i^1] += away;
temp -= away;
}
return f - temp;
} int main()
{
cin >> m >> n;
int sum = 0;
for(int i = 1; i <= m; ++i)
for(int j = 1; j <= n; ++j) {
scanf("%d",&src[i][j]);
sum += src[i][j];
num[i][j] = ++cnt;
if((i + j)&1)
Add(S,num[i][j],src[i][j]),Add(num[i][j],S,0);
else
Add(num[i][j],T,src[i][j]),Add(T,num[i][j],0);
}
for(int i = 1; i <= m; ++i)
for(int j = 1; j <= n; ++j) {
if(((i + j)&1) == 0) continue;
for(int k = 1; k <= 4; ++k) {
int fx = i + dx[k];
int fy = j + dy[k];
if(!fx || !fy || fx > m || fy > n) continue;
Add(num[i][j],num[fx][fy],INF);
Add(num[fx][fy],num[i][j],0);
}
}
int max_flow = 0;
while(BFS())
max_flow += Dinic(S,INF);
cout << sum - max_flow << endl;
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
BZOJ 1324 Exca 神剑 最小割的更多相关文章
- BZOJ 1324 Exca神剑 最小割
标题效果:给定一个n*m矩阵.所有的格宝石之子,人们可选择起始位置,后除去宝石的当前位置的周围消失,然后你就可以走两步,重复上述过程 easy发现格儿子把它周围格孩子不能拿 因此,党格访问问题 黑白染 ...
- bzoj 1324 Exca王者之剑(黑白染色,最小割)
[题意] 两相邻点不能同时选,选一个点集使得权值和最大. 出题人语文好... [思路] 将图进行黑白二染色,然后构建最小割模型. [代码] #include<set> #include&l ...
- 【BZOJ-1324】Exca王者之剑 最小割
1324: Exca王者之剑 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 483 Solved: 248[Submit][Status][Disc ...
- BZOJ 1324: Exca王者之剑
1324: Exca王者之剑 Description Input 第一行给出数字N,M代表行列数.N,M均小于等于100 下面N行M列用于描述数字矩阵 Output 输出最多可以拿到多少块宝石 Sam ...
- [BZOJ 2127] happiness 【最小割】
题目链接:BZOJ - 2127 题目分析 首先,每个人要么学文科,要么学理科,所以可以想到是一个最小割模型. 我们就确定一个人如果和 S 相连就是学文,如果和 T 相连就是学理. 那么我们再来确定建 ...
- BZOJ.3532.[SDOI2014]LIS(最小割ISAP 退流)
BZOJ 洛谷 \(LIS\)..经典模型? 令\(f_i\)表示以\(i\)结尾的\(LIS\)长度. 如果\(f_i=1\),连边\((S,i,INF)\):如果\(f_i=\max\limits ...
- BZOJ 2561 最小生成树 | 网络流 最小割
链接 BZOJ 2561 题解 用Kruskal算法的思路来考虑,边(u, v, L)可能出现在最小生成树上,就是说对于所有边权小于L的边,u和v不能连通,即求最小割: 对于最大生成树的情况也一样.容 ...
- bzoj 1497 最大获利 - 最小割
新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研 ...
- BZOJ 1391: [Ceoi2008]order [最小割]
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1509 Solved: 460[Submit][Statu ...
随机推荐
- 纯css实现苹果表盘动画
欢迎訪问我们的博客:http://www.w3ctrain.com/2015/07/06/Apple-Watch-Dials/ 随着苹果表的大量生产,我想.用CSS来实现拨号动画的时候到了. 在这篇文 ...
- jquery-easyui实现页面布局和增删改查操作(SSH2框架支持)转载
http://blessht.iteye.com/blog/1069749/ 已注册:ooip 关联的csdn 前几天心血来潮用jquery-easyui+spring.struts2.hiberna ...
- 关于android的nfc问题
最近在研究android的nfc问题 首先再网上有很多关于android nfc 读写的问题,但是大多数都是关于Mifare Classic类型卡的读写,我百试不得骑解,于是自己写了一些程序供大家参考 ...
- Qt之多线程
源地址:http://blog.csdn.net/liuhongwei123888/article/details/6072320 Qt 是一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造 ...
- Windows Azure使用VS 2010的云应用开发过程
原文 Windows Azure使用VS 2010的云应用开发过程 作为技术人员,如果在2010还不知道云计算,那么你已经“OUT”了:作为Visual Studio平台的使用者,如果你不知道VS 2 ...
- 基于visual Studio2013解决C语言竞赛题之1057打印加数
题目 解决代码及点评 /* 功能: 已知N是正整数, 它可拆写成三个正整数N1.N2和N3之和的形式N=N1+N2+N3. 请编程序打印出满足上式的全部组合,并当N1.N2和N3中至 ...
- SRM 627 D1L2GraphInversionsDFS查找指定长度的所有路径 Binary indexed tree (BIT)
题目:http://community.topcoder.com/stat?c=problem_statement&pm=13275&rd=16008 由于图中边数不多,选择DFS遍历 ...
- Jetty支持Windows认证
WAFFLE是什么? Jetty增加WAFFLE支持 DEMO 小结 WAFFLE是什么? WAFFLE是一个Windows认证框架,支持Negotiate, NTLM和Kerberos认证.WAFF ...
- java大牛list
1 Java的未来 Java能干什么.不能干什么,一开始就要搞清楚.这对于成为一个纯种的Java程序猿至关重要. 2 构建Java运行环境 Java运行在服务器,服务器都是Linux系统,对于真正程序 ...
- WinSock - 建立有连接的通信
1.建立服务端(发送端) (1)声明成员变量 public: CSocket m_sockSend; (2)每隔一秒钟发送一次数据 2.建立客户端(接收端) (1)声明成员变量 public: CSo ...