专栏文章

P9334

P9334题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio1bhqp
此快照首次捕获于
2025/12/02 11:44
3 个月前
此快照最后确认于
2025/12/02 11:44
3 个月前
查看原文
注意到小段长度 >1>1 肯定不优,直接记 fif_i[i,i][i,i] 是一个小段,在 i\le i 的前缀划分的最大段数,暴力是 O(n2)\mathcal{O}(n^2) 的,可以发现转移来的 fjf_j 是一个前缀再加上 O(logV)\mathcal{O}(\log{V}) 个零散点(证明和后文的一个结论一致,这里略去),故可以做到 O(nlogV)\mathcal{O}(n\log{V})。但是这连不带修、区间询问都做不了!
我们肯定希望这个 dp 数组有什么更好的性质,比如……递增?修改 fif_i 定义为 i\le i 的前缀划分最大段数,姑且认为 ii 单成一段(否则并到前一段上,向 fi1f_{i-1} 取个 max 即可)考虑转移,可以说明条件和上面是一致的,即需 j<k<iak>max(ai,aj)\sum\limits_{j<k<i}a_k>\max(a_i,a_j)。可能导致的问题是这个 dp 对应的一个方案是 [l1,r1],[l2,r2],[l3,r3][l_1,r_1],[l_2,r_2],[l_3,r_3],认为三者分别是大/小/大段,然而却只保证了 l1ir1ai>al2\sum\limits_{l_1\le i\le r_1}a_i>a_{l_2}l3ir3aiar2\sum\limits_{l_3\le i\le r_3} a_i\ge a_{r_2},并不必然合法。我们将其映射到一个段数相同的且保证合法的方案:若 al2ar2a_{l_2}\le a_{r_2},改为 [l1,r1],[l2,l2],(l2,r3][l_1,r_1],[l_2,l_2],(l_2,r_3],否则改为 [l1,r2),[r2,r2],[l3,r3][l_1,r_2),[r_2,r_2],[l_3,r_3],修改后任意大段总和不变小,故对于更左、更右的修改仍然可以做到;而当小段在最左/最右段时也有类似处理,不再赘述。
此时我们可以断定,fif_i 肯定是由某个最大的满足条件的 jj 转移来了,因为 ff 递增。再要求忽略前缀 max 的转移,jj 需满足 j<pi,j<k<pak>max(aj,ap)\exist j<p\le i,\sum\limits_{j<k<p}a_k>\max(a_j,a_p),有结论:iji-jO(logV)\mathcal{O}(\log{V}) 的,一个松的界是 2logV2\log{V}。若有 ap1>apa_{p-1}>a_p,此时仅考虑 aja_j 对和的限制,则 pjlogVp-j\le \log{V},因为每遇到一个不合法 jj 和就会翻倍;否则 ap1apa_{p-1}\le a_p,找到极长的这样子的递增段 [p,i][p',i],长度也是不大于 logV\log{V} 的,因为前缀和都是不断翻倍的。
则每次单点修都只会修改一个长度 2logV\le 2\log{V} 区间的 ii 对应的 jj,查询就是从 rr 开始不断跳 jj 直到跳出 [l,r][l,r],看跳了几次。这不就是我们 P3203 弹飞绵羊 吗!由于重算一个 iijjO(logV)\mathcal{O}(\log{V}) 的,而 B=n2logVB=\sqrt{n}\ge 2\log{V},故每次修改至多仅重构两个块,总复杂度就是 O(nlogV+q(n+log2V))\mathcal{O}(n\log{V}+q(\sqrt{n}+\log^2{V}))

评论

0 条评论,欢迎与作者交流。

正在加载评论...