其他分享
首页 > 其他分享> > 【做题记录】王者之剑

【做题记录】王者之剑

作者:互联网

题目:

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

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

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

求最大价值。

\(n,m\le 100\)

题解:

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

好了不扯了。


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

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

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

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

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

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

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


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

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

那么就是个二分图匹配。

然后跑一个最小割。


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

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

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

首先黑白染色。

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

然后,我们考虑奇偶。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

双倍经验方格取数。

标签:奇偶,那么,宝石,格子,记录,王者,偶数,之剑,我们
来源: https://www.cnblogs.com/trsins/p/15777654.html