洛谷2709 小B的詢問(莫隊)

2021-08-07 01:38:24 字數 1188 閱讀 2517

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

2 6

3 5

5 66

9 5

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

題目裡面k有什麼用???。

然後我就默默的把數字離散化了一下(其實無所謂的)

這道題和小z的襪子有什麼區別???

好像沒什麼區別。。。

恩。 然後直接用莫隊搞就行了

開乙個單獨的陣列記錄每個顏色出現的次數

直接計算即可

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define max 100000

inline

int read()

while(ch>='0'&&ch<='9')

return x*t;

}struct query

q[max];

int aa,ans[max],n,m,k,len,nn;

int c[max],a[max],s[max];

map mm;

inline

bool cmp(query a,query b)

int main()

sort(&q[1],&q[m+1],cmp);

int l=1,r=0;

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

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

printf("%d\n",ans[i]);

return

0;}

洛谷2709 小B的詢問(莫隊模板題)

點此看題面 大致題意 有乙個長度為n nn的序列,每個數字在1 k 1 sim k 1 k之間,有m mm個詢問,每個詢問給你乙個區間,讓你求出 i 1kc i 2 sum k c i 2 i 1k c i 2,其中c i c i c i 表示數字i ii在該區間內的出現次數。莫隊演算法 顯然,這題...

洛谷P2709 小B的詢問 莫隊

按根下n分個塊,對詢問區間雙關鍵字排序,若不在乙個塊裡按左端點排序,若在按右端點排序,然後掃一遍統計答案 考慮每次移動指標後答案的改變 分為四種情況 分別是l,r指標在查詢區間的l和r的左邊還是右邊,都討論一下 每種情況該怎麼做在紙上畫畫就明白了。沒必要特意記 include include inc...

洛谷 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行,每行兩個整...