AC日記 數顏色 bzoj 2120

2022-05-14 06:08:45 字數 1258 閱讀 3717

2120

思路:帶修改的莫隊;

對於離線排序詢問的演算法,如何修改呢?

每個詢問新增乙個修改標記;

表示當前詢問在第幾個修改之後;

然後把修改標記作為第三關鍵字來排序;

每次更新端點,先更新時間;

塊的大小為n的2/3次方;

來,上**:

#include #include 

#include

#include

using

namespace

std;

#define maxn 100050

struct

querytype ;

struct

querytype qu[maxn];

struct

changetype ;

struct

changetype cha[maxn];

int n,m,size=440,tot,num,ai[maxn],bel[maxn],ti[maxn*10

],ans[maxn];

intnow;

bool

if_[maxn];

inline

void

in(int &now)

}bool

cmp(querytype aa,querytype bb)

else

return aa.l}inline

void change(int

x) cha[x].h=ai[cha[x].to];

ai[cha[x].to]=cha[x].x;

if(if_[cha[x].to])

}inline

void unchange(int

x) ai[cha[x].to]=cha[x].h;

if(if_[cha[x].to])

}inline

void updata(int to,int

x)int

main()

sort(qu+1,qu+tot+1,cmp),l=1,r=0,t=0,now=0

;

for(int no=1;no<=tot;no++)

for(int i=1;i<=tot;i++) printf("

%d\n

",ans[i]);

fclose(stdin),fclose(stdout);

return0;

}

bzoj2120 數顏色 分塊

據說暴力可過2200ms。然而我寫分塊也才1200ms。然而很多人寫分塊跑不過暴力。參考了將狼踩盡 的思路。假設分為m塊 注意不是每塊m個 用sum x y z 表示在塊x y中顏色z 經過離散化以後 的個數,val x y 表示在x y塊中不同顏色的個數。這樣應該就比較容易明白了。修改 看u會影響...

BZOJ 2120 數顏色 分塊

time limit 6 sec memory limit 259 mb submit 6031 solved 2392 submit status discuss 墨墨購買了一套n支彩色畫筆 其中有些顏色可能相同 擺成一排,你需要回答墨墨的提問。墨墨會像你發布如下指令 1 q l r代表詢問你從第...

BZOJ 2120 數顏色 莫隊

題目傳送門 觀察前兩題,莫隊演算法好像是一種只支援查詢的離線演算法,但是莫隊真的不支援修改嗎?答案當然是否定的 莫隊是一種支援查詢和修改的離線演算法。就是一種優美的暴力 考慮在莫隊演算法中增加乙個變數no w 表示當前有no w 個修改已經修改掉了。並在每乙個詢問中增加乙個變數pr e 表示最近的修...