题目描述:
给出一个包含n(n<=50000)个1~k(k<=50000)之间的数的序列, 有m(m<=50000)个询问, 每次询问给出一个[l,r]的区间, 求区间中c(i)^2的和, 其中c(i)表示数字i在区间[l,r]的重复次数
思路:
离线莫队算法
根据公式(c+1)^2=c^2+2*c+1可以在O(1)时间内推出[l-1,r]或[l,r+1]
代码:
1 |
|
给出一个包含n(n<=50000)个1~k(k<=50000)之间的数的序列, 有m(m<=50000)个询问, 每次询问给出一个[l,r]的区间, 求区间中c(i)^2的和, 其中c(i)表示数字i在区间[l,r]的重复次数
离线莫队算法
根据公式(c+1)^2=c^2+2*c+1可以在O(1)时间内推出[l-1,r]或[l,r+1]
1 | #include <iostream> |