BZOJ3781 小B的詢問

2022-05-09 16:30:36 字數 1265 閱讀 1355

[bzoj3781]小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的序列。

接下來的m行,每行兩個整數l、r。

輸出

m行,每行乙個整數,其中第i行的整數表示第i個詢問的答案。

輸入示例

643

1321

1314

2635

56

輸出示例

695

2

資料規模及約定

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

題解

莫隊裸題。。。

就我的莫隊跑得慢(大概是因為用了 vector?)。。。

#include #include #include #include #include #include #include #include using namespace std;

int read()

while(isdigit(c))

return x * f;

}#define maxn 50010

#define maxbl 233

#define ll long long

int a[maxn];

struct que

que(int _, int __): l(_), r(__) {}

} qs[maxn];

bool cmp(int a, int b)

vector qid[maxbl];

int tot[maxn];

ll ans[maxn];

ll sqr(int x)

int main()

for(int i = 1; i <= cntb; i++) }

for(int i = 1; i <= q; i++) printf("%lld\n", ans[i]);

return 0;

}

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...