1324: Exca王者之剑

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 483  Solved: 248
[Submit][Status][Discuss]

Description

 

Input

第一行给出数字N,M代表行列数.N,M均小于等于100 下面N行M列用于描述数字矩阵

Output

输出最多可以拿到多少块宝石

Sample Input

2 2
1 2
2 1

Sample Output

4

HINT

Source

2007Amber国家队论文

Solution

最小割裸模型

见棋盘直接黑白染色,偶数秒发生消失?那就偶数秒和奇数秒分开二分图建图即可

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
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;
}
#define maxm 1000010
#define maxn 10010
int n,m,tot;
struct EdgeNode{int next,to,cap;}edge[maxm];
int head[maxn],cnt=1;
void add(int u,int v,int w)
{cnt++;edge[cnt].next=head[u]; head[u]=cnt; edge[cnt].cap=w; edge[cnt].to=v;
}
void insert(int u,int v,int w) {add(u,v,w); add(v,u,0);}int val[110][110];int dis[maxn],que[maxn<<1],cur[maxn],S,T;
bool bfs()
{for (int i=S; i<=T; i++) dis[i]=-1;que[0]=S; dis[S]=0; int he=0,ta=1;while (he<ta){int now=que[he++];for (int i=head[now]; i; i=edge[i].next)if (edge[i].cap && dis[edge[i].to]==-1)dis[edge[i].to]=dis[now]+1,que[ta++]=edge[i].to;}return dis[T]!=-1;
}
int dfs(int loc,int low)
{if (loc==T) return low;int w,used=0;for (int i=cur[loc]; i; i=edge[i].next)if (edge[i].cap && dis[edge[i].to]==dis[loc]+1){w=dfs(edge[i].to,min(low-used,edge[i].cap));edge[i].cap-=w; edge[i^1].cap+=w;used+=w; if (edge[i].cap) cur[loc]=i;if (used==low) return low;}if (!used) dis[loc]=-1;return used;
}
#define inf 0x7fffffff
int dinic()
{int tmp=0;while (bfs()){for (int i=S; i<=T; i++) cur[i]=head[i];tmp+=dfs(S,inf);}return tmp;
}
int locate(int x,int y) {return (x-1)*m+y;}
int main()
{n=read(),m=read();for (int i=1; i<=n; i++)for (int j=1; j<=m; j++)val[i][j]=read(),tot+=val[i][j];S=0,T=n*m+1;for (int i=1; i<=n; i++)for (int j=1; j<=m; j++)if ((i+j)%2==1){insert(S,locate(i,j),val[i][j]);if (i+1<=n) insert(locate(i,j),locate(i+1,j),inf);if (i-1>=1) insert(locate(i,j),locate(i-1,j),inf);if (j+1<=m) insert(locate(i,j),locate(i,j+1),inf);if (j-1>=1) insert(locate(i,j),locate(i,j-1),inf);}else insert(locate(i,j),T,val[i][j]);int maxflow=dinic();printf("%d\n",tot-maxflow);return 0;
}

微机课随随便便打着玩系列,被旁边同学摁了个数,然后第一遍还WA了...纸张

转载于:https://www.cnblogs.com/DaD3zZ-Beyonder/p/5502901.html

【BZOJ-1324】Exca王者之剑 最小割相关推荐

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

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

  2. [BZOJ]1324: Exca王者之剑

    题目大意:在一个N*M的网格之中,每个格子上都有一定价值的宝石,Amber可以任意选则一个起始点.并且Amber可以瞬间取走当前所在格子中的宝石,Amber每秒可以走一步,在偶数秒时他周围4格中的宝石 ...

  3. BZOJ 2039 人员雇佣 (最小割)

    题面:BZOJ传送门 网络流的题真神仙= = 大致分为三种情况 选某个人$i$,收益减少$a_{i}$ 选了$i$选了$j$,收益增加$2e_{ij}$ 选了$i$不选$j$,收益减少$e_{ij}$ ...

  4. BZOJ.2521.[SHOI2010]最小生成树(最小割ISAP/Dinic)

    题目链接 一条边不变其它边减少可以看做一条边增加其它边不变. 假设要加的边lab为(A->B,v),那么肯定是要使除这条边外,A->B的每条路径上的最小权值都\(>v\),这样在连通 ...

  5. bzoj 2007 [Noi2010]海拔——最小割转最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2007 一个点的高度一定不是0就是1.答案一定形如一个左上角的连通块全是0的点.一个右下角的连 ...

  6. BZOJ.3144.[HNOI2013]切糕(最小割)

    题目链接 没有\(D\)的限制怎么做?"最小"我们可以想到最小割,把同一纵轴上的点串起来,分别连到S,T,最小割就是答案.(在这把点权放到前一条边上) 有限制,即如果要割点\(i\ ...

  7. 边与最小割(bzoj 1797: [Ahoi2009]Mincut 最小割)

    1797: [Ahoi2009]Mincut 最小割 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2471  Solved: 1067 [Subm ...

  8. bzoj 3894: 文理分科 最小割

    Description 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行 描述,每个格子代表一个同学的座位.每位 ...

  9. BZOJ 3894 文理分科 最小割

    题目大意:给定一个m*n的矩阵,每个格子的人可以学文或者学理,学文和学理各有一个满意度,如果以某人为中心的十字内所有人都学文或者学理还会得到一个额外满意度,求最大满意度之和 令S集为学文,T集为学理 ...

  10. bzoj 1797: [Ahoi2009]Mincut 最小割 (网络流)

    太神了直接看了hzwer的题解,有个新认识,一条路径上满流的一定是这条路径上所有边的最小值. typearr=recordtoward,next,cap,from:longint;end; const ...

最新文章

  1. 配置发布和禁用复制功能时提示 分发服务器未正确安装。
  2. python不能加密吗_为什么我不能解密我用pycrypto加密的内容?
  3. 周围剃光头顶留长发型_为什么很多秃头的人,宁愿周围留一圈头发,也不愿剃成光头?...
  4. ROS知识【13】:ubuntu下安装eclipse-CDT【非installor】
  5. JMeter初探三-代理录制
  6. 彻底理解正向代理和反向代理
  7. java 常量接口_java接口定义常量研究
  8. gis里创建要素面板怎么打开_周末技术流 | 基于GIS的地形可视化分析
  9. 重启手机出现机器人加一个叹号_印度科幻脑洞高能!《宝莱坞机器人2.0》内地定档...
  10. 2021-2025年中国一次性生物处理系统行业市场供需与战略研究报告
  11. DNS解析错误解决办法
  12. 用计算机画对称图形,CAD画对称图形快捷键
  13. 智能颈椎按摩仪的特点和功能
  14. Saliency Detection: A Spectral Residual Approach 阅读笔记
  15. 中序遍历 java_java二叉树中序遍历递归和非递归实现
  16. OR(odd ratios)
  17. 100多个经典常用的PHP功能插件大全实例演示和下载
  18. 目前福岛高水平辐射量可能由2号反应堆释放
  19. FreeMind打开提示This application requires Java Runtime Environment XX
  20. linux ioctl 设备只读,linux – lsattr:设备的不适当的ioctl在读取标志时

热门文章

  1. Sessions and Processes
  2. 安装jenkins环境之jdk8
  3. [转]CMS Content Management System(内容管理系统) 提供商
  4. spring 事务案例--转账
  5. HTML5 20180918
  6. 这3分钟的习惯改变了我的生活
  7. 原理剖析-Netty之服务端启动工作原理分析(下)
  8. 如何深入浅出地讲解麦克斯韦方程组
  9. 初探 Yii2 的测试模式 index-test.php
  10. Android 仿PhotoShop调色板应用(一)概述