题解:P4458 [BJOI2018] 链上二次求和

link

考虑设 a 的前缀和为 s,则答案为:

Ans=i=lrj=1ni+1(si+j1sj1)=i=lr(j=insjj=0nisj)

发现这里出现了 s 的区间和,因而考虑设 a 的二阶前缀和 ssi=j=1isj,进而有:

Ans=i=lr(ssnssi1ssni)=(rl+1)ssni=l1r1ssii=nrnlssi

因此我们需要维护 ss 的区间和。考虑对 [l,r] 增加 Δss 的贡献。

  • 对于 lir,对 ssi 会贡献 (il+1)(il+2)2Δ

  • 对于 r<in,对 ssi 会贡献 [(rl+1)(rl+2)2+(rl+1)(ir)]Δ

线段树维护即可,时间复杂度为 O(qlog2n)。注意 tag 可以设为 t0,t1,t2 表示需要增加 t2i2+t1i+t0

posted @   FugiPig  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示