國家集訓隊 數顏色

2022-05-19 09:55:28 字數 911 閱讀 4484

題目:洛谷p1903、bzoj2120。

題目大意:

給你一列數,有兩種操作:

1. 詢問區間$[l, r]$內不同數出現的個數。

2. 單點修改。

解題思路:

帶修莫隊。

仍然運用分塊思路,加了乙個修改時間而已。

所以以$l$所在的塊為第一關鍵字,$r$所在的塊為第二關鍵字,修改時間為第三關鍵字排序即可。

c++ code:

#includeint n,m,sz,a[10005],cnt[1000005],k=0,t=0,b[10005],ans,out[10005];

char c[3];

#define be(i) (i/sz)

inline int readint()

struct query

}q[10005];

struct timetim[10005];

inline void change(int d,int c)

int main()else

} std::sort(q+1,q+k+1);

memset(cnt,0,sizeof cnt);

int l=1,r=1,t=0;

ans=1;

++cnt[a[1]];

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

while(q[i].twhile(rwhile(q[i].rwhile(q[i].lwhile(lout[q[i].num]=ans;

} for(int i=1;i<=k;++i)printf("%d\n",out[i]);

return 0;

}

國家集訓隊 數顏色

點此看題 正解應該是帶修莫隊,我們這裡講一下樹套樹的做法。本題主要涉及的問題是去重,我們定義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...

國家集訓隊 數顏色

墨墨購買了一套n支彩色畫筆 其中有些顏色可能相同 擺成一排,你需要回答墨墨的提問。墨墨會向你發布如下指令 1 q l r代表詢問你從第l支畫筆到第r支畫筆中共有幾種不同顏色的畫筆。2 r p col 把第p支畫筆替換為顏色col。題解 做這道題之前不會帶修改莫隊,山神學會了之後手 嘴 把手 嘴 教我...