CF Round822 D题这个做法为什么错了
  • 板块学术版
  • 楼主Andrewzdm
  • 当前回复13
  • 已保存回复13
  • 发布时间2022/9/26 15:10
  • 上次更新2023/10/27 09:53:46
查看原帖
CF Round822 D题这个做法为什么错了
286770
Andrewzdm楼主2022/9/26 15:10

题目链接
RT,是一个不同于题解的思路。

首先我们可以钦定这个 slime 从左边的出口还是从右边的出口出去,然后判定是否可行,以从左边(坐标00)出去为例。

首先计算往左边走各时刻的前缀和,得到前缀和序列 ss。若前缀和一直非负那么就可以直接走出去,否则就必须吞右边的 slime。

考虑逐个按顺序将吞右边的 slime 的值插入 ss 中并更新 ss。(ss 是前缀和,所以会把当前位置及之后的所有位置都加上这个健康值)

设要吞的右边的那个 slime 的健康值是 xx

  1. x<0x\lt0,那么为了不go die,在某个位置吞了它之后当前位置的健康值不能为负,否则就没机会了。然后这个位置要尽可能地靠前,这样后面吞大于 00 的健康值的时候更有机会把原序列 ss 中的负值调正。
  2. x0x\ge0,直接在当前的位置上吞了 xx

持续调整,直至前缀和恒非负结束,可行。

感觉这个贪心策略没什么问题,一直 WA on test 4,而且是在第4个数据点的第1204组数据错了……

代码贴二楼

2022/9/26 15:10
加载中...