USACO23FEB Hungry Cow P

这个涂色很容易让人想到均摊的 set 维护,但是有可能修改同一个位置,不太可做。

同样地,我们考虑只带插入不同位置的情况。

考虑一个线段树做法,直接维护整行格子的权值和以及黑色格子的个数。考虑一个修改 \((i,j)\) 相当于区间覆盖 \([i,k]\) ,其中 \([i,k]\) 中修改前白色格子的数量为 \(j\)。显然有单调性,于是可以线段树上二分。

于是你可以把弱化版(铜组 T1)过了,复杂度 \(O(n\log w)\)

考虑到两个下标相同的修改 \((i,j_1)\)\((i,j_2)\) 分别在时刻 \(t_1,t_2(t_1<t_2)\) 进行,并且之间没有任何 \(i\) 位置的修改。可以看作 \((i,j_1)\) 操作的影响范围为 \([t_1,t_2)\),也就是说每次操作的影响范围都是一段区间。直接线段树分治,做完了。

由于不太好撤销,可以在时间线段树每个节点上开动态开点线段树。需要可持久化一下,并且合理利用空间。复杂度是 \(O(n\log n\log w)\) 的。

提交记录。

posted @ 2023-07-21 08:24  Ender_32k  阅读(34)  评论(0编辑  收藏  举报