蒟蒻第一次发题解,看官点个赞再走QwQ
题目链接 https://www.luogu.org/problem/P4474
题目描述
这是在阿尔托利亚·潘德拉贡成为英灵前的事情,她正要去拔出石中剑成为亚瑟王,在这之前她要去收集一些宝石。
宝石排列在一个n*m的网格中,每个网格中有一块价值为v(i,j)的宝石,阿尔托利亚·潘德拉贡可以选择自己的起点。
开始时刻为0秒。以下操作,每秒按顺序执行
- 在第i秒开始的时候,阿尔托利亚·潘德拉贡在方格(x,y)上,她可以拿走(x,y)中的宝石。
- 在偶数秒,阿尔托利亚·潘德拉贡周围四格的宝石会消失
- 若阿尔托利亚·潘德拉贡第i秒开始时在方格(x,y)上,则在第i+1秒可以立即移动到(x+1,y),(x,y+1),(x-1,y)或(x,y-1)上,也可以停留在(x,y)上。
求阿尔托利亚·潘德拉贡最多可以获得多少价值的宝石
输入格式
第一行给出数字N,M代表行列数.N,M均小于等于100,宝石的价值不会超过10000.下面N行M列用于描述数字矩阵
输出格式
输出最多可以拿到多少价值宝石
输入输出样例
2 2 1 2 2 1
4
QwQ,既然是吾王的题目,肯定要A了
本题的前置知识:网络流(没学过的童鞋可以去这里康康https://baijiahao.baidu.com/s?id=1607147031919790970&wfr=spider&for=pc,洛谷日报上写的还是很详细的)
现在开始分析啦(敲黑板!!!)
每秒开始时吾王都可以获得她所站位置上的宝石(只能获取一次),在偶数秒吾王周围的四个格子的宝石会消失,题目还给出了开始时间为0秒,所以刚开始的时候吾王周围的四个格子就没有宝石了,那么第一秒和第2秒的决策都是移动,如果两秒都不移动。。。。(吾王睡了吗),如果先移动,再停留,,,那什么都没得到,反而使更多的宝石消失了,先停留再移动也是同样的道理。
综上分析(到底分析了啥),吾王在每个偶数秒获得宝石,且宝石的位置互不相邻(自行脑补一下QwQ),我们可以将题意简化为选取m个互不相临的宝石,使得这m个宝石价值之和最大。
这里就要用到最小割(就是割掉权值之和最小的m条边,使源点和汇点不连通)的知识啦
最大流等于最小割
蒟蒻不想写严格的证明(其实不会证明,推导证明什么的不存在的,这辈子都不可能QwQ)
所以下面为看官老爷提供简洁的证明。
。。。。
最小割到底能干嘛呢
稍微分析可以知道横坐标和纵坐标之和为偶数的宝石肯定互不相邻,和为奇数的宝石也是。
所以我们可以将横坐标和纵坐标之和为偶数的宝石连接源点,和为奇数的宝石连接汇点,边权为他们的价值(还要连边权为0的反向边),相邻的宝石之间互相连一条边权为INF的边。
图建好了,