BZOJ 2120 帶修改莫隊

2021-08-10 02:12:18 字數 1192 閱讀 3295

簡略題意:單點修改,區間查詢不同顏色個數。

帶修改莫隊的板題,學習了乙個。

和普通莫隊的區別在於塊的大小需要設定為n2

/3,這樣可以確保複雜度為o(

n3/5

) 。

每次詢問之前需要把在當前時間點之前的所有修改用上,這之後的所有修改刪掉。

#define others

#ifdef poj

#include

#include

#include

#include

#include

#include

#endif // poj

#ifdef others

#include

#endif // others

//#define file

#define all(x) x.begin(), x.end()

using

namespace

std;

const

double eps = 1e-8;

int dcmp(double x) ;

typedef

long

long ll;

typedef

unsigned

long

long ull;

void file()

namespace solver

} ask[maxn];

bool cmp(mo a, mo b)

struct mo_sub upd[maxn];

void del(int x)

void ins(int x)

void time_ins(int t)

void time_del(int t)

void solve() ;

else

cnt2++, upd[cnt2] = ;

}sort(ask+1, ask+1+cnt1);

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

sort(ask+1, ask+1+cnt1, cmp);

for(int i = 1; i <= cnt1; i++) printf("%d\n", ans[ask[i].id]);

}}int main()

bzoj2120 數顏色 莫隊(帶修改)

題目描述 墨墨購買了一套n支彩色畫筆 其中有些顏色可能相同 擺成一排,你需要回答墨墨的提問。墨墨會像你發布如下指令 1 q l r代表詢問你從第l支畫筆到第r支畫筆中共有幾種不同顏色的畫筆。2 r p col 把第p支畫筆替換為顏色col。為了滿足墨墨的要求,你知道你需要幹什麼了嗎?第1行兩個整數n...

帶修莫隊 bzoj2120 數顏色

塊大小為n2 3。把詢問和修改分開。每次兩個詢問之間的修改進行暴力轉移,如果修改在上一次詢問的區間裡,就會對當前狀態形成影響。好慢。include include include includeusing namespace std define n 10001 int num n n,m,b n ...

bzoj 2120 數顏色(單點修改莫隊)

普通不帶修改的莫隊是對詢問二元組 l,r l,r l,r 進行分塊排序以降低複雜度 對於單點修改的莫隊,引入乙個時間座標 t,詢問變成三元組 l,r,t l,r,t l,r,t 每一步 l,r,t l,r,t l,r,t 有6個方向可走 用類似普通莫隊的分塊方法,對 l,r 以 n23 n n3 2...