论文题。
大概就是首先可以发现只有偶数时刻才有可能吃到宝石,然后相邻的格子内的宝石不可能都吃到。然后就想到了最大点权独立集,然后构造证明任意独立集都可以实现。详见2007Amber国家队论文。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define N 10010
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,m,h[N],num=1,T=10001,lev[N],cur[N],ans=0,id[110][110],tot=0;
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
struct edge{int to,next,val;
}data[100010];
inline void add(int x,int y,int val){data[++num].to=y;data[num].next=h[x];h[x]=num;data[num].val=val;data[++num].to=x;data[num].next=h[y];h[y]=num;data[num].val=0;
}
inline bool bfs(){queue<int>q;memset(lev,0,sizeof(lev));q.push(0);lev[0]=1;while(!q.empty()){int x=q.front();q.pop();for(int i=h[x];i;i=data[i].next){int y=data[i].to;if(lev[y]||!data[i].val) continue;lev[y]=lev[x]+1;if(y==T) return 1;q.push(y);}}return 0;
}
inline int dinic(int x,int low){if(x==T) return low;int tmp=low;for(int &i=cur[x];i;i=data[i].next){int y=data[i].to;if(lev[y]!=lev[x]+1||!data[i].val) continue;int res=dinic(y,min(data[i].val,tmp));if(!res) lev[y]=0;else tmp-=res,data[i].val-=res,data[i^1].val+=res;if(!tmp) return low;}return low-tmp;
}
int main(){
//  freopen("a.in","r",stdin);n=read();m=read();for(int i=1;i<=n;++i)for(int j=1;j<=m;++j){id[i][j]=++tot;int val=read();ans+=val;if(i+j&1) add(tot,T,val);else add(0,tot,val);}for(int i=1;i<=n;++i)for(int j=1;j<=m;++j){if(i+j&1) continue;for(int k=0;k<4;++k){int xx=i+dx[k],yy=j+dy[k];if(xx<1||xx>n||yy<1||yy>m) continue;add(id[i][j],id[xx][yy],inf);}}while(bfs()){memcpy(cur,h,sizeof(cur));ans-=dinic(0,inf);}printf("%d\n",ans);return 0;
}

bzoj1324 Exca王者之剑(构造+最小割)相关推荐

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

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

  2. [BZOJ1324]Exca王者之剑(最小割)

    === === 这里放传送门 === === 题解 一开始写这个题的时候看到什么"可以任意选择起点"还"可以停一秒"还有什么"奇数秒偶数秒" ...

  3. [bzoj1324]Exca王者之剑

    Exca王者之剑 Time Limit: 10 Sec  Memory Limit: 162 MB [Submit][Status][Discuss] Description   Input 第一行给 ...

  4. bzoj1324: Exca王者之剑

    传送门 将图染色后大力跑最小点权点覆盖(四个方向) 答案=总权值-最小点权点覆盖. #include<cmath> #include<cstdio> #include<c ...

  5. BZOJ 1324: Exca王者之剑/BZOJ 1475: 方格取数 最大权独立集 最小割

    1324: Exca王者之剑 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 618  Solved: 310 [Submit][Status][Di ...

  6. (最小割)洛谷P4474 王者之剑

    洛谷P4474 王者之剑 思路: 显然求二分图最大权独立点集. 把点进行黑白染色. SSS向白点建边,权值为vi,jv_{i,j}vi,j​; 白点向周围的黑点建边,权值为infinfinf; 黑点向 ...

  7. 网络流最小割 王者之剑

    传送门 不用考虑走的方法,因为一旦合法,即不同时取相邻的两个,一定能达到. 所以只用考虑怎么取就行了. 把棋盘黑白染色,S到黑点建权值为val的边,白点到T建权值为val的边, 然后把相邻的黑白点建一 ...

  8. 【bzoj1324】Exca王者之剑(8-9 方格取数问题)

    *题目描述: 在一个有m*n (m,n<=100)个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法, ...

  9. POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】

    题目描述: 给你一个无向图,问你最少删掉几个点,使这个图成不连通. 解题报告: 概念 (1)一个具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通, ...

最新文章

  1. adobe就不敢把融合做得更好一点?
  2. bayer格式插值算法实现
  3. 全检体系结构风格浅谈
  4. 10.5 考试 (感觉比较难)
  5. A Complete Machine Learning Walk-Through in Python
  6. asp 下拉框二级联动
  7. mybatis一级,二级缓存。缓存带来的脏读问题
  8. 我想做个MP3,要怎么入手?
  9. Java开发以及Web 和移动程序员必须了解的10个框架
  10. 【bzoj2434】[Noi2011]阿狸的打字机【AC自动机】
  11. 拆装智伴机器人_智伴机器人软件下载-智伴下载 v4.2.8-pc6智能硬件网
  12. 1.checkpoint防火墙安装以及高可靠性配置
  13. Centos Siege测试使用
  14. 全排列算法(字典序法、SJT Algorithm 、Heap's Algorithm)
  15. 前端面试基本---this 指向(call、apply、bind用法及区别详解)
  16. ORMLite 数据库的使用--二次封装
  17. 精心为学弟学妹整理的 C语言/C++ 项目合集
  18. C1认证学习五(HTTP)
  19. 计算机工程师系列职称答辩,评中级工程师职称需要答辩吗?申报人需哪些条件?...
  20. 卸载 Ubuntu 16.04 Kinetic版本ROS

热门文章

  1. 腾讯云轻量应用服务器通过VNC搭建Ubuntu图形界面
  2. ipv6学习笔记(手写版)
  3. 盲打每分钟资源10几个字_每个人都应该看到的资源
  4. ctf秀crypto部分持续更新
  5. 模拟电子技术 -- PN结
  6. mbd是啥matlab,MBD文件扩展名 - 什么是.mbd以及如何打开? - ReviverSoft
  7. Mac安装双系统(win7系统)
  8. 中颖EEPROM 操作
  9. 2018杭州人才引进办理指引
  10. windows桌面窗口层次解析以及C语言设置壁纸原理应用