Bzoj3781 小B的詢問

2022-05-14 01:43:21 字數 1137 閱讀 4129

小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 669

52對於全部的資料,1<=n、m、k<=50000

裸莫隊演算法。bzoj許可權題,未評測。

1

/*by silvern

*/2 #include3 #include4 #include5 #include6 #include7

#define ll long long

8using

namespace

std;

9const

int mxn=100001;10

intread()

13while(ch>='

0' && ch<='9')

14return x*f;15}

16struct

linea[mxn];

21int cmp(const line a,const

line b)

25int

n,m,k;

26int

c[mxn];

27ll cnt[mxn],ans[mxn];

28int

main()

39 sort(a+1,a+m+1

,cmp);

40int l=1,r=0

;41 ll res=0;42

for(i=1;i<=m;i++)

46while(r49while(l52while(r>a[i].r)

55 ans[a[i].id]=res;56}

57for(i=1;i<=m;i++)printf("

%lld\n

",ans[i]);

58return0;

59 }

BZOJ 3781 小B的詢問

description 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l.r 中的重複次數。小b請你幫助他回答詢問。題目分析 分塊 include include include...

BZOJ3781 小B的詢問

description 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求 r i lc i 2 i lrc i 2的值,其中i的值從1到k,其中c i 表示數字i在 l.r 中的重複次數。小b請你幫助他回答詢問。input 第一行,三個整數n m k。第二...

BZOJ 3781 小B的詢問

time limit 10 sec memory limit 128 mb submit 643 solved 435 submit status discuss 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求sigma c i 2 的值,其中i的值從1...