按根下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 ...