开始看 Ynoi 了呢……
话说这道题其实很早之前就会了,由于当时常数太大就没过……
有个套路叫做根号分治。
对于此题,具体地说,就是设一个阈值 T。
若 x≥T,直接暴力更改即可,用分块维护,修改复杂度是 O(nT)。
若 x<T,则注意到此时应该得到一个 O(T) 的算法才能平衡复杂度;考虑把原序列按每块大小为 x 分成若干块,则每一块一定都刚好有一个位置被修改,贡献是一样的。
于是前缀和维护即可,复杂度 O(T)。
其实 T 瞎取个数就行了(逃
代码:
1 |
|
开始看 Ynoi 了呢……
话说这道题其实很早之前就会了,由于当时常数太大就没过……
有个套路叫做根号分治。
对于此题,具体地说,就是设一个阈值 T。
若 x≥T,直接暴力更改即可,用分块维护,修改复杂度是 O(nT)。
若 x<T,则注意到此时应该得到一个 O(T) 的算法才能平衡复杂度;考虑把原序列按每块大小为 x 分成若干块,则每一块一定都刚好有一个位置被修改,贡献是一样的。
于是前缀和维护即可,复杂度 O(T)。
其实 T 瞎取个数就行了(逃
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment