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王者之剑_最小割的更多相关文章

  1. BZOJ_1797_[Ahoi2009]Mincut 最小割_最小割+tarjan

    BZOJ_1797_[Ahoi2009]Mincut 最小割_最小割+tarjan Description A,B两个国家正在交战,其中A国的物资运输网中有N个中转站,M条单向道路.设其中第i (1≤ ...

  2. BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割

    BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作 ...

  3. LOJ_6045_「雅礼集训 2017 Day8」价 _最小割

    LOJ_6045_「雅礼集训 2017 Day8」价 _最小割 描述: 有$n$种减肥药,$n$种药材,每种减肥药有一些对应的药材和一个收益. 假设选择吃下$K$种减肥药,那么需要这$K$种减肥药包含 ...

  4. BZOJ_3144_[Hnoi2013]切糕_最小割

    BZOJ_3144_[Hnoi2013]切糕_最小割 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R ...

  5. BZOJ_2561_最小生成树_最小割

    BZOJ_2561_最小生成树_最小割 题意: 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条 ...

  6. BZOJ_3438_小M的作物_最小割

    BZOJ_3438_小M的作物_最小割 Description 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子 有1个(就是可以种一棵作物) ...

  7. BZOJ_4177_Mike的农场_最小割

    BZOJ_4177_Mike的农场_最小割 Description Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不 ...

  8. BZOJ1324: Exca王者之剑

    1324: Exca王者之剑 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 256  Solved: 131[Submit][Status] Desc ...

  9. [bzoj1497][NOI2006]最大获利_网络流_最小割

    最大获利 bzoj-1497 题目大意:可以建立一个点,花费一定的代价:将已经建立的两个点之间连边,得到一定收益.有些节点之间是不允许连边的. 注释:1<=点数<=5,000,1<= ...

随机推荐

  1. BOW-js浏览器对象模型

  2. 一个简单的Java代码生成工具—根据数据源自动生成bean、dao、mapper.xml、service、serviceImpl

    目录结构 核心思想 通过properties文件获取数据源—>获取数据表的字段名称.字段类型等—>生成相应的bean实体类(po.model).dao接口(基本的增删改查).mapper. ...

  3. java.lang.String 字符串操作

    1.获取文件名 //获取文件名,即就是去掉文件的后缀 /** * mypic.jpg * 获取文件名 * 1. 先找到"."的位置 * 2. 从第一个字符开始截取到".& ...

  4. LoadRunner10自带的WEBTOURS,无法显示Flights页面问题解决办法

    [问题描述] 安装LoadRunner10之后,尝试打开自带的webTours页面学习.第一次可以打开,之后安装了一RFT.Oracle等软件,就出现页面无法显示问题.一直以为是Java的问题,尝试各 ...

  5. spring 整合struts

    1.例子:未被spring整合 struts.xml 的配置文件 <constant name="struts.enable.DynamicMethodInvocation" ...

  6. javaEE web 系统安装时自定义初始化

    通常JavaWeb项目在第一次启动时我们需要做一些初始化工作,比如:初始化一个管理员的登录账户和密码,配置缓存.定时任务等,这些操作可以通过手工修改数据库完成,但是容易出错且繁琐,而且也很麻烦.如果这 ...

  7. iOS-UI控件之UITableView(三)- 自定义不等高的cell

    Storyboard_不等高 对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持) 添加子控件和contentView之间的间距约束 设置tableViewCell的真实行高和估算行高 / ...

  8. Android嵌入式安卓触摸屏|4418开发板平台

    核心板参数 尺寸:50mm*60mm 高度:核心板连接器为1.5mm 4418 CPU:ARM Cortex-A9 四核 S5P4418处理器 1.4GHz 6818 CPU:ARM Cortex-A ...

  9. MRC转ARC(2)

    春节前抽空花了一天的时间将手头的工程从MRC转成了ARC,然后陆陆续续地修复一部分因为转ARC引起的内存泄漏和崩溃,到目前为止工程也算是比较稳定了,抽空记上一笔.(虽说这种事情这辈子估计都只会做这么一 ...

  10. 我能考虑到的数组(老)方法就这些了(es5)

    代码注释都写的很清楚了 关键字:斐波那契数组.二维数组.多维数组(矩阵)... <!DOCTYPE html> <html lang="en"> <h ...