abc423 E - Sum of Subarrays
题意:求 ∑L≤l≤r≤Rai。
通过贡献法,转化为 ∑L≤l≤i≤r≤Rai=∑i∈[L,R]ai×∑L≤l≤r≤R[l≤i≤r]。
分析一下, ∑i∈[L,R]ai×[i−L+1]×[R−i+1],整理得到:
因为只有查询,前缀和维护 ∑ai⋅i2,∑ai⋅i,∑ai 即可。
P12894 [蓝桥杯 2025 国 Java B] 智能交通信号灯
题意:修改 ai 和多次查询 ∑l≤i<j≤rmex(ai,aj)。
通过贡献法,转化为: ∑1≤m≤3m×∑l≤i<j≤r[mex(ai,aj)=m]。
分析一下,记 [l,r] 中, ai=1 的个数为 cnt1, ai=2 的个数为 cnt2, ai=3 的个数为 cnt3。答案为:
P2221 [HAOI2012] 高速公路
题意:区间加 x 和多次查询 (2R−L+1)∑L≤l≤r≤R∑i∈[l,r]ai(这里线段转换为点,经过 r - 1 处理)。
观察分子,通过贡献法,转化为: ∑i∈[L,R]ai×∑L≤l≤r≤R[l≤i≤r]。
分析一下, ∑i∈[L,R]ai×[(i−L+1)×(R−i+1)],整理得到:
同 abc423 E - Sum of Subarrays,但是有区间修改,用线段树维护 ∑ai⋅i2,∑ai⋅i,∑ai。
P10403 「XSOI-R1」跳跃游戏
题意:按照下面义 socre(x,y),求 ∑1≤x≤y≤nscore(x,y)。
通过贡献法,答案转化为:
根据区间 gcd 具有单调性,枚举左端点 x,两次二分右端点 y,用求和公式算出答案。
(这道题用时限 750 ms 情况下,线段树时间复杂度 O(nlog2n) 会 TLE 获得 50 pts。正解 ST 表,时间复杂度 O(nlogn))
P5094 [USACO04OPEN] MooFest G 加强版
题意:给两个数组 v,x,求 ∑1≤i,j≤nmax(vi,vj)⋅∣xi−xj∣。
按照 v 排序,转化为 ∑i≤i<j≤nvj⋅∣xi−xj∣。
对 ∣xi−xj∣ 分类讨论
合并一下
算 ∑1≤i<j≤n,xj>xi1−∑1≤i<j≤n,xj<xi1 即:比 xj 大的数量 − 比 xi 小的数量;算 ∑i≤i<j≤n,xj<xixi−∑i≤i<j≤n,xj>xixi 即:比 xj 小的和 − 比 xj 大的和。用两个线段树维护即可。时间复杂度 O(nlogn)。