ICPC2024 Shanghai L
ICPC2024 Shanghai L
题意
一个圆桌,等距离安排了 \(n\) 个人,编号为 \(0\sim n-1\),有 \(n\) 道菜,第 \(i\) 道菜放在 \((x+i)\bmod n\) 个人面前,每次可以顺时针或逆时针转动一次桌子,耗时 \(1\) 秒。
- 顺时针旋转:原本在第 \(i\) 个人面前的菜会移动到第 \((i+1)\bmod n\)个人面前
- 逆时针旋转:原本在第 \(i\) 个人面前的菜会移动到第 \((i-1)\bmod n\) 个人面前
每个人有一个伸手距离 \(r_i\)。第 \(i\) 个人能吃到当前在第 \(j\) 个人面前的菜,当且仅当存在整数 \(k\) 满足:
- \(-r_i \leq k \leq r_i\)
- \((i+k+n)\bmod n = j\)
有 \(m\) 个偏好要求:第 \(i\) 个偏好表示第 \(p_i\) 个人想要在第 \(d_i\) 道菜上桌后的 \(t_i\) 秒内吃到它。
请判断:对于所有 \(x = 0, 1, \ldots, n-1\),如果服务员从第 \(x\) 个人开始上菜,是否能满足所有偏好要求。
其中 \(n\le 5000,m\le 1e5\)
思路
我们发现菜的编号连续,所以不妨钦定当前 \(0\) 号人面前的菜的编号为状态,那么此时访问过的状态会构成一段环形连续区间。
考虑限制内容,设当前桌子的位移为 \(y\in[-t,t]\),则 \(p-r_p\le x+d+y \le p+r_p\),转化成 \(0\) 号人的状态即为 \(p-r_p-d\le x+y\le p+r_p-d\),即在 \(t\) 时间点之前,\(0\) 号人面前一定要经过 \([p-r_p-d,p+r_p-d]\) 中的一道菜。
设 \(g_{l,r}\) 表示满足所有条件的经过 \(l\sim r\) 的其中一个结点最晚的时间节点,我们发现无法很好的刻画这一问题的答案,因为 \(g_{l,r-1}\) 与 \(g_{l+1,r}\) 没有很好的关联性,我们若先到达 \(r\),那么此时的最晚时间节点应为 \(min(g_{l,r-1}-1,g_{l+1,r})\) ;我们若先到达 \(l\),那么此时的最晚时间节点应为 \(min(g_{l,r-1},g_{l+1,r}-1)\) 。这样的问题我们无法使用一个 \(g_{l,r}\) 表示出所有的情况。
考虑改变状态含义,设 \(g_{l,r}\) 表示 可能 满足所有条件的经过 \(l\sim r\) 的其中一个结点最晚的时间节点,若满足了 \(g_{l,r}\) 的时间限制仍有可能无法满足所有条件,但若满足了 \(g_{l,r}\) 以及其内部的所有限制,那么一定可以满足所有条件。
故我们有转移
一个直接的想法是枚举所有的 \(x\),设 \(dp_{l,r,0/1}\) 表示访问完 \(l\sim r\) 区间且当前 \(0\) 号节点面前摆放的是第 \(l\) 道菜或第 \(r\) 道菜的最短时间是多少,那么此时的转移即为
若 \(dp_{l,r,0}>g_{r+1,l}\) ,则当前 \(dp_{l,r,0}\) 无法参与转移。其余 \(1\) 情况的转移同理。时间复杂度 \(O(n^3)\)
我们发现此时检验答案方法都为 \(\exists l,r,\text{使得} \min(dp_{l,r,0},dp_{l,r,1})!=\inf\text{ 且 }g_{r+1,l-1}=\inf\) ,即能满足 \(l\sim r\) 中的所有限制且 \(r+1\sim l-1\) 内不存在限制。可以发现终止状态相同,起始状态不同。考虑 翻转 dp
改变 \(dp\) 状态,设 \(dp_{l,r,0/1}\) 表示访问完 \(l\sim r\) 区间且当前 \(0\) 号节点面前摆放的是第 \(l\) 道菜或第 \(r\) 道菜的最晚时间是多少,那么此时的转移即为
检验答案方法为 \(dp_{x,x,0}\ge 0\) ,时间复杂度 \(O(n^2)\)。

浙公网安备 33010602011771号