題目描述
小b有乙個序列,包含n個1~k之間的整數。他一共有m個詢問,每個詢問給定乙個區間[l..r],求sigma(c(i)^2)的值,其中i的值從1到k,其中c(i)表示數字i在[l..r]中的重複次數。小b請你幫助他回答詢問。
輸入第一行,三個整數n、m、k。
第二行,n個整數,表示小b的序列。
接下來的m行,每行兩個整數l、r。
輸出m行,每行乙個整數,其中第i行的整數表示第i個詢問的答案。
樣例輸入
6 4 3
1 3 2 1 1 3
1 42 6
3 55 6
樣例輸出69
52題解莫隊演算法模板題,優雅的暴力
設原來有n個某顏色,加1後對答案的貢獻為(n+1)^2-n^2=2*n+1,減1對答案的貢獻為(n-1)^2-n^2=-(2*n-1)。
然後各種區間平移得到答案。
#include #include #include #define n 50010using namespace std;
struct data
a[n];
int c[n];
long long ans[n] , cnt[n];
bool cmp(data x , data y)
int main()
for(i = 1 ; i <= m ; i ++ ) printf("%lld\n" , ans[i]);
return 0;
}
BZOJ3781 小B的詢問 莫隊
題目 有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l.r 中的重複次數。思路 裸的莫隊吧。直接開陣列 c 暴力維護每個數出現的次數,區間轉移的時候如果假如加入乙個數 k,維護平方和...
BZOJ 3781 小B的詢問 莫隊演算法
time limit 10 sec memory limit 128 mb submit 942 solved 635 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l.r 中的...
BZOJ 3781 小B的詢問(莫隊演算法)
還能不能再裸點。include include include include include include include include include using namespace std typedef long long ll define rep i,n for int i 0 i ...