BZOJ 3781 小B的詢問

2022-04-30 11:21:08 字數 1503 閱讀 3229

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 2

3#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個...