「望月悲叹的最初分块」。
区间第 k 小考虑值域分块。
那么问题变成了维护每个位置的值,每一块内属于每一权值块的值的个数,每一块内每一权值的个数,并且后两个还要维护前缀和。
然后考虑修改操作。
后两种信息的维护是平凡的,包括前缀和也可以暴力去做。
但是如何维护每个位置的值?
考虑并查集。
冷静分析一下这个并查集其实是 O(1) 的。
只不过有一定常数影响。
说实话并不难写……但是我咋写挂这么多次(
另外,不难发现这个东西改一改就可以做隔壁第二分块了(
代码:
1 |
|
「望月悲叹的最初分块」。
区间第 k 小考虑值域分块。
那么问题变成了维护每个位置的值,每一块内属于每一权值块的值的个数,每一块内每一权值的个数,并且后两个还要维护前缀和。
然后考虑修改操作。
后两种信息的维护是平凡的,包括前缀和也可以暴力去做。
但是如何维护每个位置的值?
考虑并查集。
冷静分析一下这个并查集其实是 O(1) 的。
只不过有一定常数影响。
说实话并不难写……但是我咋写挂这么多次(
另外,不难发现这个东西改一改就可以做隔壁第二分块了(
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment