簡略題意:單點修改,區間查詢不同顏色個數。
帶修改莫隊的板題,學習了乙個。
和普通莫隊的區別在於塊的大小需要設定為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...