做题记录 25.2.20

\(\textcolor{green}\odot\) P8289 [省选联考 2022] 预处理器

直接模拟即可

代码

\(\textcolor{purple}\odot\) P8290 [省选联考 2022] 填树

\(sol(L,R)\) 表示边权强制在 \([L,R]\) 范围内时的数量和权值和(其为二元组)

\(mr=\max_{i=1}^n r_i\)

则根据容斥原理,答案为 \(\sum_{i=1}^{mr}sol(i,i+k)-sol(i+1,i+k)\)

每个 \(sol(L,R)\) 都可树形 \(dp\) 求出,单次 \(O(n)\),从而得到 \(O(n\max r_i)\) 的解法

\(f(x)=sol(x,x+k)-sol(x+1,x+k)\)

则从 \(x=l_i\)\(x=r_i+1\)\(x=l_i-k\)\(x=r_i-k+1\) 处将 \([1,mr]\) 裂为 \(O(n)\) 段后,可证每段 \(f(x)\) 都是多项式

对于每一段,暴力求出前缀和的前 \(O(n)\) 项,然后使用拉格朗日插值求出前缀和的最后一项,即总和

时间复杂度为 \(O(n^3)\)

存在 \(O(n^2\log n)\) 的做法

代码

参考

posted @ 2025-02-25 15:08  Hstry  阅读(5)  评论(0)    收藏  举报