小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個詢問的答案。
輸入樣例#1: 複製
6 4 31 3 2 1 1 3
1 42 6
3 55 6
輸出樣例#1: 複製
6952
對於全部的資料,1<=n、m、k<=50000
#include#include#include
#include
#include
using
namespace
std;
const
int n=500005
;int
n,m,k;
inta[n],c[n];
intans,ans[n];
intbelong[n];
struct
querry
}q[n];
intread()
void
init()
/*void update(int now,bool type)
else
}*/void update(int now,bool
type)
void
work()
for(int i=1;i<=m;++i)
printf(
"%d\n
",ans[i]);
}int
main()
P2709 小B的詢問 莫隊板子
題目描述 小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的序列。接下...
P2709 小B的詢問 莫隊
題目描述 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l.r 中的重複次數。小b請你幫助他回答詢問。輸入輸出格式 輸入格式 第一行,三個整數n m k。第二行,n個整數,表示小...
P2709 小B的詢問 莫隊
題面只要能想出 o 1 的方式轉移 l,r 莫隊就不難了。此題求區間 sum kcnt i 2 那我們就 o 1 更新就好了,先減去原來的貢獻,更新cnt再加上現在的貢獻,這樣就更新完了。注意 莫隊小心初始化,直接l 0,r 0等可能會炸。include include include define...