ことばがありあまれどなお、 このゆめはつづい|

trsins

园龄:3年10个月粉丝:18关注:2

【做题记录】王者之剑

  • P4474 王者之剑

    • 算法:最小割

题目:

  1. 可以拿走所在方格宝石获得其价值。

  2. 在偶数秒周围四格的宝石会消失。

  3. 每秒可以选择移动上下左右一格或不动。

求最大价值。

n,m100

题解:

看到二次元女朋友吾王就进来冲了/se /se

好了不扯了。


显然的网络流。还是考虑割点,将每个点分为入点和出点,然后连接这两个的边的流量就是其价值。

然后这题比较特别的地方就是偶数秒周围的点消失。

那么我们可以推出两个重要性质:

  1. 只可能在偶数秒取到宝石。

因为若在奇数秒取得宝石,那么在上一秒为偶数秒时正在格子周围,会将此格子消去,所以上一秒是可能原地不动,那么也就是在偶数秒到达格子并取。

  1. 不可能取到两个相邻的点。

不妨设为 x,y,先取了 x,又第一条性质知此时必为偶数秒,那么 y 就会被删。


相邻的格子不能被同时取到,又这一性质可以想到对这整个格图做黑白相邻染色。

先抛弃这样做的正确性,那么我们将奇数点连向源点,偶数点连向汇点。奇偶点之间用 inf 连接。

那么就是个二分图匹配。

然后跑一个最小割。


知道做法了,我们来看这样做的正确性。

这里先推荐一下 RemiliaScarlet◎
的题解
,讲的还是很详细的。

我们来证明一下我们这样做的正确性。

首先黑白染色。

如果你看到这个说明图挂了

然后,我们考虑奇偶。

如果两个宝石颜色相同,说明他们奇偶性相同,可以直接获得。

如果奇偶不同,那么就需要改变一次奇偶。而改变时间奇偶只需在某一格停下。

但是我们是不能随便停下的,因为有可能停下后是偶数秒后将周围格子宝石消去。

比如上图中我们从 (1,1) 想要去取 (1,4) 的宝石,由于两个宝石奇偶性不同,所以我们需要在中途停下一秒。如果我们在 (1,2) 停下了,那么 (2,2) 就会被删去。

我们简单考虑转移从上一行至下一行。

所以我们考虑那些没有宝石且下方也没有宝石的格子,对其进行讨论是否能停留。

为什么要下方也没有格子?

如上面举的例子,如果在 (1,2) 停留就会对 (2,2) 造成影响,所以我们真正只能考虑不仅自身没有宝石,下方也没有宝石的格子。

好,那么我们来进行讨论。

对于这种特殊的格子,我们用蓝色对其染色。

如果你看到这个说明图挂了

我们来分类讨论:(1 表示灰(有宝石),0 表示白, 表示蓝)

  • 11 停留。
  • 00 停留或走。
  • 10/01 直接走。
  • ... 按照 0,1,0... 的顺序随便。

所以,对于任何一种情况,都会有一种方案对应。

所以我们直接跑最小割是对的。

剩下的很简单了,板子的最小割,然后标记个上下左右的方向即可。

双倍经验方格取数。

本文作者:trsins

本文链接:https://www.cnblogs.com/trsins/p/15777654.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   trsins  阅读(41)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示