[bzoj1324]Exca王者之剑_最小割
Exca王者之剑 bzoj-1324
题目大意:题目链接。
注释:略。
想法:
最小割经典模型。
所有格子向源点连权值为格子权值的边。
将棋盘黑白染色后白点反转源汇。
如果两个格子相邻那么黑点向白点连$inf$的有向边。
求最小割即可。
开始把所有点的权值都加上,如果被割掉那么就表示这个格子不选。
Code:
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define N 100010
using namespace std;
queue<int>q;
int to[N<<1],nxt[N<<1],tot=1,val[N<<1],head[N],dis[N],S,T;
int d1[]={-1,1,0,0};
int d2[]={0,0,1,-1};
char *p1,*p2,buf[100000];
#define nc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int rd() {int x=0,f=1; char c=nc(); while(c<48) {if(c=='-') f=-1; c=nc();} while(c>47) x=(((x<<2)+x)<<1)+(c^48),c=nc(); return x*f;}
inline void add(int x,int y,int z)
{
to[++tot]=y; val[tot]=z; nxt[tot]=head[x]; head[x]=tot;
to[++tot]=x; val[tot]=0; nxt[tot]=head[y]; head[y]=tot;
}
bool bfs()
{
memset(dis,-1,sizeof dis); while(!q.empty()) q.pop();
dis[S]=0; q.push(S); while(!q.empty())
{
int x=q.front(); q.pop(); for(int i=head[x];i;i=nxt[i]) if(dis[to[i]]==-1&&val[i]>0)
{
dis[to[i]]=dis[x]+1; q.push(to[i]);
if(to[i]==T) return true;
}
}
return false;
}
int dinic(int x,int fl)
{
int tmp=fl; if(x==T) return fl; for(int i=head[x];i;i=nxt[i]) if(dis[to[i]]==dis[x]+1&&val[i]>0)
{
int mdl=dinic(to[i],min(val[i],tmp));
if(!mdl) dis[to[i]]=-1;
tmp-=mdl; val[i]-=mdl; val[i^1]+=mdl;
if(!tmp) break;
}
return fl-tmp;
}
int main()
{
int ans=0;
int n=rd(),m=rd(); T=n*m+1; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)
{
int v=rd(); ans+=v;
if((i+j)&1) add(S,(i-1)*m+j,v),add((i-1)*m+j,T,0);
else add((i-1)*m+j,T,v),add(S,(i-1)*m+j,0);
for(int k=0;k<4;k++)
{
int x=i+d1[k],y=j+d2[k];
if(x>=1&&x<=n&&y>=1&&y<=m) ((i+j)&1)?
(add((i-1)*m+j,(x-1)*m+y,inf)):
(add((x-1)*m+y,(i-1)*m+j,inf));
}
}
while(bfs()) ans-=dinic(S,1<<30);
cout << ans << endl ;
return 0;
}
小结:最小割的建模还是比较具有规律性的。
[bzoj1324]Exca王者之剑_最小割的更多相关文章
- BZOJ_1797_[Ahoi2009]Mincut 最小割_最小割+tarjan
BZOJ_1797_[Ahoi2009]Mincut 最小割_最小割+tarjan Description A,B两个国家正在交战,其中A国的物资运输网中有N个中转站,M条单向道路.设其中第i (1≤ ...
- BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割
BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作 ...
- LOJ_6045_「雅礼集训 2017 Day8」价 _最小割
LOJ_6045_「雅礼集训 2017 Day8」价 _最小割 描述: 有$n$种减肥药,$n$种药材,每种减肥药有一些对应的药材和一个收益. 假设选择吃下$K$种减肥药,那么需要这$K$种减肥药包含 ...
- BZOJ_3144_[Hnoi2013]切糕_最小割
BZOJ_3144_[Hnoi2013]切糕_最小割 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R ...
- BZOJ_2561_最小生成树_最小割
BZOJ_2561_最小生成树_最小割 题意: 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条 ...
- BZOJ_3438_小M的作物_最小割
BZOJ_3438_小M的作物_最小割 Description 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子 有1个(就是可以种一棵作物) ...
- BZOJ_4177_Mike的农场_最小割
BZOJ_4177_Mike的农场_最小割 Description Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不 ...
- BZOJ1324: Exca王者之剑
1324: Exca王者之剑 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 256 Solved: 131[Submit][Status] Desc ...
- [bzoj1497][NOI2006]最大获利_网络流_最小割
最大获利 bzoj-1497 题目大意:可以建立一个点,花费一定的代价:将已经建立的两个点之间连边,得到一定收益.有些节点之间是不允许连边的. 注释:1<=点数<=5,000,1<= ...
随机推荐
- esp8266 串口通讯
1.发送 调用uart_init(115200,115200);初始化串口,波特率设置为115200.前面一个是设置uart0的波特率.后面一个是设置.uart的波特率 然后就可以使用uart0_tx ...
- 掌握Spark机器学习库-07-回归分析概述
1)回归与分类算法的区别 回归的预测结果是连续的,分类的预测结果是离散的. 2)spark实现的回归算法有: 3)通过相关系数衡量线性关系的程度
- 第二章 TCP/IP 基础知识
第二章 TCP/IP 基础知识 TCP/IP transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的. ...
- Linux下支持mysql支持远程ip访问
示例代码: use mysql; SELECT `Host`,`User` FROM user; UPDATE user SET `Host` = '%' WHERE `User` = 'use**' ...
- Android源码之陌陌源码
本源码是一个老版本的陌陌源码,翻了翻代码,发现有完整的登陆注册功能(基于本地)其余都是静态页面.有需要的朋友可以拿去研究一下.其中登陆账号是86930007密码为123456. 这个项目源码我也上 ...
- java web 学习笔记 - servlet01
---恢复内容开始--- 1.Servlet介绍 Servlet 是用java语言编写的服务器端小程序,属于一个CGI程序,但与传统的CGI不同的是,它是多线程实现的,并且可以多平台移植. 用户自定义 ...
- 基于ANGULAR.JS的下一代WEB应用开发-01-yeoman
Angularjs 个人认为这是一款很好的框架!它将我们从AJAX应用的开发中解救了出来!嗯....废话就说道这里下面我们开始把! 首先我们必须了解一些核心的概念: 客户端模版 MVC 数据绑定 依赖 ...
- python游戏开发:pygame中的IO、数据
一.python输入输出 1.输出 python一次可以打印多个变量,只要用一个逗号将每个变量隔开就可以了.比如: A = 123B = "ABC"C = 456D = " ...
- template or render function not defined.
template or render function not defined. H_婷 关注 2018.08.16 17:22 字数 106 阅读 3859评论 0喜欢 2 下午写 Vue $par ...
- git 控制操作
克隆文件 git clone https://gitee.com/xxxxx/xxxxx.git 克隆分支文件 git clone -b 分支名 https://gitee.com/xxxxx/xxx ...