题解:P6715 [CCO 2018] Fun Palace

· · 题解

宇宙题,大道至简。

以下称题面中生物,称 当前 的第 i 个位置的人数为 c_i当前 的定义需要结合语境。

发现操作可逆。

f_{i,j} 表示在 考虑全局 的情况下,c_i 能通过若干操作得到的最大值 =j,此时 \sum_{k=1}^{i} c_k 的最大值。

考虑转移从 f_{i,*}\to f_{i+1,*},分类讨论:

j\geq a_i+b_i 时,此时 c_{i+1}=0(不然 c_i 可以更大),所以 c_{i+1} 的最大值也是 j,转移有 f_{i,j}\to f_{i+1,j}

j\geq a_i 时,同理,c_{i+1}=0,但是你不能把所有 j 个人送过去了,转移有 f_{i,j}\to f_{i+1,j-a_i}

为什么上面恰好是 jj-a_i 呢?如果能大于他们,我们再将从 i\to i+1 的操作撤销,发现 c_{i+1}\ne 0,矛盾。

j<a_i 时,考虑 c_{i+1}

c_{i+1}=b_i 时,c_{i+1} 可以把 j 全都抢走,有转移 f_{i,j}\to f_{i+1,j+b_{i}}+b_i

c_{i+1}<b_i 时,c_{i+1} 什么都干不了,有转移 f_{i,j}\to f_{i+1,k},其中 k<b_i

c_{i+1}>b_i 时,显然 c_{i+1} 还能给 c_{i} 更多人,此时 c_{i} 不是最大,矛盾。所以不考虑其转移。

初始时有 \forall i\in[0,e),f_{1,i}=i,直接转移即可,时间复杂度 O(nV),其中 V=\max(a_i,b_i,e)