CF266E More Queries to Array... Solution
给定序列aa1a2⋯an,执行q= l r xl≤i≤rai←x?
Description
给定序列 a = ( a 1 , a 2 , ⋯ , a n ) a=(a_1,a_2,\cdots,a_n) a=(a1,a2,⋯,an),执行 q q q 次操作分两种:
= l r x:对每个 l ≤ i ≤ r l\le i\le r l≤i≤r 执行 a i ← x a_i\gets x ai←x.? l r k:求 ( ∑ i = l r a i × ( i − l + 1 ) k ) m o d ( 10 9 + 7 ) (\sum\limits_{i=l}^r a_i\times (i-l+1)^k)\bmod (10^9+7) (i=l∑rai×(i−l+1)k)mod(109+7).
Limitations
1 ≤ n , q ≤ 10 5 1\le n,q\le 10^5 1≤n,q≤105
1 ≤ l ≤ r ≤ n 1\le l\le r\le n 1≤l≤r≤n
0 ≤ a i , x ≤ 10 9 0\le a_i,x\le 10^9 0≤ai,x≤109
0 ≤ k ≤ 5 0\le k\le 5 0≤k≤5
5 s , 256 MB 5\text{s},256\text{MB} 5s,256MB
Solution
直接维护答案式子是不大现实的.
考虑拆开,由二项式定理得:
原式 = ∑ i = l r a i × ( ∑ j = 0 k ( k j ) × ( i + 1 ) j × ( − l ) k − j ) = ∑ j = 0 k ( k j ) × ( − l ) k − j × ( ∑ i = l r a i × ( i + 1 ) j ) \begin{aligned} \text{原式}&=\sum_{i=l}^r a_i \times (\sum_{j=0}^k\binom{k}{j}\times (i+1)^j\times(-l)^{k-j})\\ &=\sum_{j=0}^k\binom{k}{j}\times(-l)^{k-j}\times (\sum_{i=l}^r a_i \times (i+1)^j) \end{aligned} 原式=i=l∑rai×(j=0∑k(jk)×(i+1)j×(−l)k−j)=j=0∑k(jk)×(−l)k−j×(i=l∑rai×(i+1)j)
预处理 ( k j ) \binom{k}{j} (jk),线段树维护 S = ∑ i = l r a i × ( i + 1 ) j S=\sum\limits_{i=l}^r a_i \times (i+1)^j S=i=l∑rai×(i+1)j 即可,剩下的查询时暴算.
时间复杂度 O ( k q log n ) O(kq\log n) O(kqlogn).
更多推荐



所有评论(0)