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}\) 以及其内部的所有限制,那么一定可以满足所有条件。

故我们有转移

\[g_{l,r}=\min(g_{l,r},g_{l+1,r},g_{l,r-1}) \]

一个直接的想法是枚举所有的 \(x\),设 \(dp_{l,r,0/1}\) 表示访问完 \(l\sim r\) 区间且当前 \(0\) 号节点面前摆放的是第 \(l\) 道菜或第 \(r\) 道菜的最短时间是多少,那么此时的转移即为

\[dp_{l-1,r,0}=\min(dp_{l,r,0}+1,dp_{l,r,1}+len)\\ dp_{l,r+1,0}=\min(dp_{l,r,1}+1,dp_{l,r,0}+len) \]

\(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_{l+1,r,0}=\max(\min(g_{r+1,l},dp_{l,r,0})-1,\min(g_{r+1,l},dp_{l+1,r+1,1})-len)\\ dp_{l,r-1,1}=\max(\min(g_{r,l-1},dp_{l,r,1})-1,\min(g_{r,l-1},dp_{l-1,r-1,0})-len) \]

检验答案方法为 \(dp_{x,x,0}\ge 0\) ,时间复杂度 \(O(n^2)\)

posted @ 2025-10-17 15:38  xtp  阅读(10)  评论(0)    收藏  举报