國家集訓隊 數顏色 維護佇列

2022-06-18 16:06:15 字數 836 閱讀 9133

然而這題還帶修改。帶修改的莫隊怎麼做呢?於是我趕緊去補習了一波。

對於當前詢問,可以知道的是只有它之前的修改操作能夠對它造成影響。所以我們可以記錄下每個詢問的前面有幾次修改:

struct queryq[maxm];

struct changec[maxm];

//main函式中

for(register int i=1;i<=m;i++)else c[++pos_c].pos=l,c[pos_c].val=r;

}

然後我們在莫隊的時候加入乙個計數的變數:now記錄目前做了多少次修改。然後對於當前的第i個詢問,設在這個詢問之前一共有pre個修改操作,那麼會有三種情況:

1.now2.now=pre,不需要做任何操作。

3.now>pre。那麼把pre+1~now的修改刪去即可。

#pragma gcc optimize(3)

#include#include#include#include#include#define maxn 50001

#define maxm 50001

#define maxcol 1000001

using namespace std;

int n,m,col[maxn];

inline int read()

}int main()else c[++pos_c].pos=l,c[pos_c].val=r;

}moqueue();

for(register int i=1;i<=pos_q;i++) printf("%d\n",ans[i]);

return 0;

}

國家集訓隊 數顏色 維護佇列(帶修莫隊)

題意 對給定的序列,回答m個詢問,q 詢問l到r中不同的顏色數量,r 將下標為x的顏色改為y 題解 帶修莫隊,相對普通的莫隊,加多了乙個關鍵字排序 include define num ch 0 define pn putchar n using namespace std templatevoid...

國家集訓隊 數顏色

點此看題 正解應該是帶修莫隊,我們這裡講一下樹套樹的做法。本題主要涉及的問題是去重,我們定義nxt i nxt i nxt i 為最靠近i ii位置後面顏色和i ii相同的位置,統計 l,r l,r l,r 裡面不同顏色的個數即統計 i lrnx t i r sum nxt i r i lr nxt...

數顏色 國家集訓隊

待修莫隊模板題 待修莫隊在普通莫隊的基礎上,額外維護乙個修改操作,每一次根據查詢操作的時間加入修改或是撤銷修改。實現蠻顯然的,配合 很容易搞懂。note 塊大小的證明參見這裡,此處不做贅述。include using namespace std namespace standardio templa...