P4474 王者之剑

题目大意

n*m的带权网格,任意选择起点
开始时刻为0秒。以下操作,每秒按顺序执行

  1. 在第i秒开始的时候,在方格(x,y)上,获得(x,y)的值
  2. 在偶数秒,周围四格的值清零
  3. 每秒可选择不动或走一格

求最大值

易证:选择获得某格上的值时,周围四格就不能获得了------二分图最大点权独立集

网格------奇偶分类

网络流跑最小割

My complete code: 

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
using namespace std;
typedef long long LL;
const LL maxn=500000;
const LL inf=0x3f3f3f3f;
const LL dx[5]={0,-1,0,1,0};
const LL dy[5]={0,0,1,0,-1};
inline LL read(){
LL x=0,f=1; char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1; c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0'; c=getchar();
}return x*f;
}
struct node{
LL to,next,flow;
}dis[maxn];
LL num=-1,s,t,n,m,ans;
LL head[maxn],dep[maxn];
inline void Add(LL u,LL v,LL flow){
dis[++num]=(node){v,head[u],flow}; head[u]=num;
}
inline bool Bfs(){
memset(dep,0,sizeof(dep));
queue<LL> que;
que.push(s);
dep[s]=1;
while(que.size()){
LL u=que.front();
que.pop();
for(LL i=head[u];i!=-1;i=dis[i].next){
LL v=dis[i].to;
if(!dep[v]&&dis[i].flow){
dep[v]=dep[u]+1;
que.push(v);
}
}
}
return dep[t];
}
LL Dfs(LL u,LL flow){
if(u==t)
return flow;
LL tmp=flow;
for(LL i=head[u];i!=-1;i=dis[i].next){
LL v=dis[i].to;
if(dep[v]==dep[u]+1&&dis[i].flow&&tmp){
LL now=Dfs(v,min(tmp,dis[i].flow));
if(now){
dis[i].flow-=now;
dis[i^1].flow+=now;
tmp-=now;
}else
dep[v]=inf;
}
}
return flow-tmp;
}
inline LL Dinic(){
LL sum=0;
while(Bfs())
sum+=Dfs(s,inf);
return sum;
}
int main(){
n=read(); m=read();
s=0; t=n*m+1;
memset(head,-1,sizeof(head));
for(LL i=1;i<=n;++i)
for(LL j=1;j<=m;++j){
LL val=read();
ans+=val;
if((i+j)&1){
Add(s,(i-1)*m+j,val);
Add((i-1)*m+j,s,0);
}else{
Add((i-1)*m+j,t,val);
Add(t,(i-1)*m+j,0);
}
} for(LL i=1;i<=n;++i)
for(LL j=1;j<=m;++j){
if((i+j)&1){
for(LL k=1;k<=4;++k){
LL nx=i+dx[k],ny=j+dy[k];
if(nx<1||nx>n||ny<1||ny>m)
continue;
Add((i-1)*m+j,(nx-1)*m+ny,inf);
Add((nx-1)*m+ny,(i-1)*m+j,0);
}
}
}
ans-=Dinic();
printf("%lld",ans);
return 0;
}

  

P4474 王者之剑的更多相关文章

  1. 洛咕 P4474 王者之剑

    宝石只能在偶数秒取到,假设有一个宝石在奇数秒取到了,那么上一秒是偶数秒,在上一秒的时候这里的宝石就没了. 相邻的两个宝石不能同时取,很显然,先取一块,那么这是偶数秒,取完了这一块之后相邻的都没了. 只 ...

  2. 【BZOJ-1324】Exca王者之剑 最小割

    1324: Exca王者之剑 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 483  Solved: 248[Submit][Status][Disc ...

  3. BZOJ1324: Exca王者之剑

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

  4. 图论(二分图最大权独立点集):COGS 2051. 王者之剑

    2051. 王者之剑 ★★★☆   输入文件:Excalibur.in   输出文件:Excalibur.out   简单对比 时间限制:1 s   内存限制:256 MB [题目描述] 这是在阿尔托 ...

  5. BZOJ 1324: Exca王者之剑

    1324: Exca王者之剑 Description Input 第一行给出数字N,M代表行列数.N,M均小于等于100 下面N行M列用于描述数字矩阵 Output 输出最多可以拿到多少块宝石 Sam ...

  6. [COGS 2051] 王者之剑

    Saber大法吼 2051. 王者之剑 ★★★☆   输入文件:Excalibur.in   输出文件:Excalibur.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述 ...

  7. [bzoj1324]Exca王者之剑_最小割

    Exca王者之剑 bzoj-1324 题目大意:题目链接. 注释:略. 想法: 最小割经典模型. 所有格子向源点连权值为格子权值的边. 将棋盘黑白染色后白点反转源汇. 如果两个格子相邻那么黑点向白点连 ...

  8. 【BZOJ】【1324】王者之剑

    网络流/二分图最大点权独立集 Amber(胡伯涛)论文<最小割模型在信息学竞赛中的应用>中的例题…… 感觉这个好神啊,果然是一切皆为网络流……这转化太神奇了 /************** ...

  9. bzoj 1324 Exca王者之剑(黑白染色,最小割)

    [题意] 两相邻点不能同时选,选一个点集使得权值和最大. 出题人语文好... [思路] 将图进行黑白二染色,然后构建最小割模型. [代码] #include<set> #include&l ...

随机推荐

  1. 【GLSL教程】(五)卡通着色 【转】

    http://blog.csdn.net/racehorse/article/details/6641623 引言 卡通着色可能是最简单的非真实模式shader.它使用很少的颜色,通常是几种色调(to ...

  2. Youtube深度学习推荐系统论文

    https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45530.pdf https://zh ...

  3. Linux学习之十八-sudo分权管理

    sudo分权管理 1.为什么需要sudo? 当我的主机是多人共管的环境时,如果大家都使用 su 来切换成为 root 的身份,那么就得每个人知道 root 的密码,这样密码太多人知道可能会流出去,很不 ...

  4. linux 下route命令

    参考:http://blog.sina.com.cn/s/blog_67146a750100zoyi.html 为了让设备能访问另一个子网,需要在设备里增加路由到子网络,下面是一些资料.基本操作如下: ...

  5. 将App发布到WasLiberty的较稳妥方法

    1.将应用解压放到一个目录 具体步骤: 1.1 建立目录,假设应用包为app.war且和新建目录sp在同一目录下 #mkdir sp 1.2 将app.war 改名为app.zip,这是为了解压#mv ...

  6. POJ 3181 Dollar Dayz(全然背包+简单高精度加法)

    POJ 3181 Dollar Dayz(全然背包+简单高精度加法) id=3181">http://poj.org/problem?id=3181 题意: 给你K种硬币,每种硬币各自 ...

  7. tomcat内存、连接数优化

    1.检測系统能够设置的内存大小 java -Xmx1024M -version(当中1024表示检測内存能否够调整到这个数) 2.设置tomcat内存 在tomcat_home/bin/catalin ...

  8. HDU 4927 大数

    题意非常easy: 对于长度为n的数.做n-1遍.生成的新数列: b1=a2-a1   b2=a3-a2  b3=a4-a3 c1=b2-b1   c2=b3-b2 ans=c2-c1 最后推出公式: ...

  9. HDoj-1233-还是畅通project-prim算法

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  10. js 扩展replaceAll

    //扩展replaceAll; String.prototype.replaceAll = function(s1,s2) { return this.replace(new RegExp(s1,&q ...