LOJ3561 The short shank (妙题)
记 \(L_i=\max_{1\le j<i,t_j+(i-j)\le T}j\),即使得 \(i\) 会越狱的最靠近 \(i\) 的人。则有 \(i\) 不越狱当且仅当 \([L_i,i)\) 放了床垫。
问题转变为放 \(D\) 个床垫,使得最多的 \([L_i,i)\) 内有床垫。
观察这些区间的性质。注意到这些区间只可能包含或相离。因为如果两区间相交,则 \(L\) 更小的那个区间可以使得 \(L\) 变大,与 \(\max\) 的定义矛盾。
既然区间只有包含或相离,把床垫放在小的区间显然更优。更进一步,对每一个区间将包含其的最小区间作为其父亲,可以得到一棵森林。问题转化为选 \(D\) 个叶子放床垫,根到这些叶子路径上覆盖的点个数最大值。
于是问题变成了 "攻略"。