Krydom: 暁の水平线に胜利を刻むのです

ソロモンの悪夢、見せてあげる!

@krydom9月前

10/11
11:02
莫队算法

[bzoj 3781] 小B的询问

♦♦♦♦♦♦   Description   ♦♦♦♦♦♦

 小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。小B请你帮助他回答询问.

♦♦♦♦♦♦   Input   ♦♦♦♦♦♦

第一行,三个整数N、M、K。
第二行,N个整数,表示小B的序列。
接下来的M行,每行两个整数L、R。

♦♦♦♦♦♦   Output   ♦♦♦♦♦♦

M行,每行一个整数,其中第i行的整数表示第i个询问的答案。

♦♦♦♦♦♦   Sample Input   ♦♦♦♦♦♦

6 4 3
1 3 2 1 1 3
1 4
2 6
3 5
5 6

♦♦♦♦♦♦   Sample Output   ♦♦♦♦♦♦

6
9
5
2

♦♦♦♦♦♦   Hint   ♦♦♦♦♦♦

对于全部的数据,1<=NMK<=50000

♦♦♦♦♦♦   题解  ♦♦♦♦♦♦

莫队算法,记录c[i]表示i出现了多少次,每次移动的时候根据c[i]的变化来加加减减就行了

c++:

pascal:

 

[bzoj 3781] 小B的询问