23.5 杂题

CF1612G Max Sum Array

分析一下问题,考虑某 \(c_i\) 个数在数组中的位置是 \(p_1,p_2,\dots p_{c_i}\),那这些位置的贡献为 \(\sum (2\times i - c-1)x_i\)。然后,这个排序不等式一下就好了。至于统计值搞一个差分前缀和就行了。

CF543E Listening to Music

先稍微转换问题,对于所有 \(a_i<x\),相当于给所有 \(\in [i,\min(i+m-1,n)]\) 的右端点答案加一。最后就是求一个区间 \(\min\)。于是有一个离线扫描线的 \(n\log n\) 做法。可持久化+标记永久化,可以做到 \(O(n\log n)\) 时空。考虑分块。

对于散块询问,我们需要知道的是块首的值。如果直接预处理是 \(O(n\sqrt{n})\) 空间的。考虑继续平衡复杂度,对操作继续分块。那么就相当于有 \(O(\sqrt{n})\) 个区间加,做一次区间查 \(\min\)。差分一下复杂度就平衡下来了。

对于整块查询,由于整块加法是平凡的,我们只需考虑散块加法。而对于一个修改,散块加法只有 \(O(1)\) 次。于是在修改的时候对散块重构,重新记录散块的 \(\min\) 即可。

CF1824A LuoTianyi and the Show

假设已经有一个人了(没有就分别当 \(0\)\(m+1\) 有一个人),那么一类和二类都可以结合三类按照顺序往这个人的左边/右边放。如果有一个三类就暂时给三类让路。这样子可以 \(O(1)\) 判断。于是枚举第一个加入的三类人即可。

CF1824B LuoTianyi and the Floating Islands

对于奇数,这样的点显然只有一个。而对于偶数,对于一条边,如果两边数量均为 \(m\) 这条边两个端点均可。于是对于每条边在下面的端点计数 \(\binom{sz_u}{m/2}\times \binom{n-sz_u}{m/2}\)。最后每组都少算了一个端点,加个一即可。

CF1824C LuoTianyi and XOR-Tree

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章