题解:[ICPC 2023 WF] Jet Lag

我们可以采取从后向前反向构造的方式贪心地做。

假设我们在 \([j,i]\) 活动 一直 保持清醒,那么这一段的睡觉时间 \(k\) 至少\(\lceil\dfrac{e_i-b_j}{2}\rceil\),那么开始睡觉的时间即为 \(st=b_j-k\)。我们只能保证这个时间对于 \(i\) 合法,无法保证与其余无交,故做出如下分类讨论。

  • \(e_{j-1}>st\),也就是说在活动期间睡觉,不合法。我们令 \(j\gets j-1\),继续回溯下去直至睡眠合法。

  • 若上不成立,且 \(e_{j-1}\ge st-1\),我们可以在 \(t_{j-1}\) 时刻就开始睡觉,直至 \(b_j\)。我们考虑一种极限情况:当 \(e_{j-1}=st-1\)\(e_i=b_j+1\),如果此时我们睡到 \(b_j\),那么会导致结束在 \([k,2k)\) 区间,可能会影响下一次操作。因此,我们此时使其睡到 \(b_j-1\),即可保证其下一次睡眠是合法的。

  • \(e_{j-1}<st-1\),我们可以 \([st,b_j]\) 时间段睡,在这之前睡一段 \(k\) 能保证 \(st\) 在第三个 \(k\) 之中即可。

直至 \(j=0\),此时找不到合法的睡眠区段,无解。

posted @ 2025-07-22 12:22  Toorean  阅读(20)  评论(0)    收藏  举报