aaa

https://class.51nod.com/Contest/Problem.html#contestProblemId=6392

看似数据结构,实则数学题。
而且题解做法和“原题”的做法没有啥关系。
先把式子换一种写法。
原式等于 l=1nr=lni=lr(bi×(j=lraj))
显然可以待定系数一下:
设答案为 i=1nbiqi
再设 qi=j=1npi,jaj
由于修改是与 b 有关而与 a 无关的,所以 p,q 都不会修改。
看一下这样处理有什么好处。
对于一个区间 [l,r] 增加 k,设它对原答案就会增加 i=lrkqi=ki=lrqi
那么只要求出 q 就好了。
而求 q 是与 p 有关的,考虑一下 pi,j 的含义。
观察式子可以发现,它指的是既包含了 i,并且包含了 j 的区间的个数。(这里可以手动模拟思考一下)
那么当 ij 时, qi,j=i×(nj+1)
否则为 j×(ni+1)
所以 pi=j=1i1j(ni+1)aj+j=ini(nj+1)aj
但现在去求 p 依然是 n^2 的。
所以可以观察 pipi1 的关系。
显然先把一个 p 分为两个 加起来,设它们是 pi=xi+yi
观察一下,xi=xi1j=1i1jaj
yi=yi1+j=in(nj+1)aj
所以预处理一下 ia_i 的前缀和与 (n-i+1)a_i的后缀和就做完了,时间复杂度很优秀,是 O(n+m) 的。

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17768325.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起