洛谷P2709 小B的詢問 莫隊

2021-08-22 19:27:56 字數 968 閱讀 7831

按根下n分個塊,對詢問區間雙關鍵字排序,若不在乙個塊裡按左端點排序,若在按右端點排序,然後掃一遍統計答案

考慮每次移動指標後答案的改變

分為四種情況 分別是l, r指標在查詢區間的l和r的左邊還是右邊,都討論一下

每種情況該怎麼做在紙上畫畫就明白了。。。沒必要特意記

#include

#include

#include

#include

#include

#include

using namespace std;

#define debug(x) cerr << #x << "=" << x << endl;

const

int maxn =

50000+10

;int c[maxn]

, be[maxn]

,n,m,k,f[maxn]

,ans;

struct mo a[maxn]

;bool cmpmo

(mo a, mo b)

bool cmpid

(mo a, mo b)

void

revise

(int k,

int op)

intmain()

for(

int i=

1; i<=m; i++

)sort

(a+1

, a+m+

1, cmpmo)

;int l=

1, r=0;

for(

int i=

1; i<=m; i++

)sort

(a+1

, a+m+

1, cmpid)

;for

(int i=

1; i<=m; i++

)return0;

}

洛谷 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的詢問

給定乙個長度為 n n 的序列,m role presentation m m次詢問,詢問 1.k 1.k 的所有數在l.rl r中出現了幾次,求它們的平方和 樸素演算法tl e tle 線段樹tl e tle 可能是我打的不夠優美 又突然想到這道題貌似沒有修改,於是就打了乙個不帶修改的莫隊 首先,...

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

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