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到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
[submit][status][discuss]
莫隊演算法模板題
1 #include 23#define int long long
45 typedef long
long
longint;67
const
int siz = 50000 + 5;8
9int
n, m, k;
10int
l, r, s;
11int
num[siz];
12int
cnt[siz];
1314 longint sum = 0;15
16struct
query qry[siz];
2021 inline bool cmp_lr(const query &a, const query &b)
2728 inline bool cmp_id(const query &a, const query &b)
3132 inline longint sqr(int
t) 35
36 inline void remove(int
t) 41
42 inline void insert(int
t) 47
48 inline void solve(query &q)
5657 signed main(void
) 67 s = sqrt(n); l = 1, r = 0
;68 std::sort(qry + 1, qry + 1 +m, cmp_lr);
69for (int i = 1; i <= m; ++i)solve(qry[i]);
70 std::sort(qry + 1, qry + 1 +m, cmp_id);
71for (int i = 1; i <= m; ++i)
72 printf("
%lld\n
", qry[i].ans);
73 }
@author: yousiki
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。第二...
BZOJ3781 小B的詢問
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個...