【题解】「CSP模拟赛」雨天 rain

【题解】「CSP模拟赛」雨天 rain

雨天 rain

考场上打了一个动态开点线段树,但是被卡空间了😭:record


先将当前的雨量,画成折线。下称:斜线为一条斜率不为 \(0\) 的线段

考虑到每次操作可能带来两种影响:

  1. \(x>0\):最多新增一条斜线,或者合并若干条斜线;
  2. \(x<0\):删除若干条斜线。

由此,发现雨量形成的图像一定是不减的。

(进一步发现,她和 \(y=x\) 这个图像的差值也是不减的,于是就可以线段树上二分了。

但是仔细想一下,每次修改最多新增一条斜线,而且每个斜线至多被删除一次。

而且只会在最开头的地方操作,用栈维护,可以做到均摊 \(\mathcal O(q)\)

(其实考场上也想过均摊的做法,几乎都想出来了,但是觉得线段树更板一点,就直接开打了😭。


Code

posted @ 2024-07-26 12:20  CloudWings  阅读(21)  评论(0)    收藏  举报