题目链接:https://www.luogu.com.cn/problem/P5268
n n n个数的一个序列,定义 g e t ( l 1 , r 1 , x ) get(l_1,r_1,x) get(l1,r1,x)表示区间 [ l 1 , r 1 ] [l_1,r_1] [l1,r1]中有多少个 x x x。
每次询问 ( l 1 , r 1 , l 2 , r 2 ) (l_1,r_1,l_2,r_2) (l1,r1,l2,r2)求 ∑ x ∞ g e t ( l 1 , r 1 , x ) ∗ g e t ( l 2 , r 2 , x ) \sum_{x}^{\infty}get(l_1,r_1,x)*get(l_2,r_2,x) x∑∞get(l1,r1,x)∗get(l2,r2,x)
考虑莫队,有 g e t ( l 1 , r 1 , x ) ∗ g e t ( l 2 , r 2 , x ) get(l_1,r_1,x)*get(l_2,r_2,x) get(l1,r1,x)∗get(l2,r2,x)
= = =
g e t ( 1 , r 1 , x ) ∗ g e t ( 1 , r 2 , x ) − g e t ( 1 , l 1 − 1 , x ) ∗ g e t ( 1 , r 2 , x ) get(1,r_1,x)*get(1,r_2,x)-get(1,l_1-1,x)*get(1,r_2,x) get(1,r1,x)∗get(1,r2,x)−get(1,l1−1,x)∗get(1,r2,x) − g e t ( 1 , r 1 , x ) ∗ g e t ( 1 , l 2 − 1 , x ) + g e t ( 1 , l 1 − 1 , x ) ∗ g e t ( 1 , l 2 − 1 , x ) -get(1,r_1,x)*get(1,l_2-1,x)+get(1,l_1-1,x)*get(1,l_2-1,x) −get(1,r1,x)∗get(1,l2−1,x)+get(1,l1−1,x)∗get(1,l2−1,x)
然后分成四次莫队就好了
