P2709 小B的詢問 莫隊板子

2021-09-29 01:58:07 字數 1067 閱讀 9783

題目描述

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

1 3 2 1 1 3

1 42 6

3 55 6

輸出 #169

52說明/提示

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

#include

using

namespace std;

typedef

long

long ll;

const

int n=

50010

;int a[n]

,pos[n]

,cnt[n]

;struct node

p[n]

;ll res,ans[n]

;void

add(

int r)

void

sub(

int r)

intmain()

for(

int i=

1;i<=m;i++

)sort

(p+1

,p+1

+m,[

](node x,node y));

int l=

1,r=0;

for(

int i=

1;i<=m;i++

)for

(int i=

1;i<=m;i++

)printf

("%lld\n"

,ans[i]);

}

a new begin

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的序列。接下來的m行,...

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