洛谷P2709 小B的詢問 基礎莫隊

2021-09-25 22:37:59 字數 920 閱讀 6484

洛谷p2709小b的詢問

void

add(

int x)

void

remove

(int x)

//這兩個函式都是用來處理l,r指標移動時對答案的貢獻,x是移走/來的點的id

for(

int i =

1; i <= m; i++

)//下面是預處理

int len =

sqrt

(n);..

.query[i]

.k =

(query[i]

.l -1)

/ len +1;

//k是指塊的id

//就這麼些~很簡單~

#include

#include

#include

using

namespace std;

const

int maxn =

50000+10

;struct query};

int n, m, k, a[maxn]

;query query[maxn]

;int ans0[maxn]

;int ans, cnt[maxn]

;void

add(

int x)

void

remove

(int x)

void

solve()

for(

int i =

1; i <= m; i++

)printf

("%d\n"

, ans0[i]);

}int

main()

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

洛谷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個整數...