學術篇 luogu2184貪婪大陸

2022-09-06 10:48:32 字數 1121 閱讀 5018

題目在這裡哦, 戳一下就可以了~

題目大意:

支援兩種操作,區間新增一種新元素,查詢區間顏色種數..

題目標籤是線段樹啊,我也本來想寫乙個線段樹,後來寫不出來……(我太弱了orz)

然後就草率地看了看題解裡面的思路咯,感覺思路非常的不錯,於是我就a掉這題之後寫了這篇blog…

我們通過這幅圖可以看到:

- 我們直接統計區間的覆蓋不是很好統計, 考慮字首

- 當前我們已經進行了10次覆蓋

- 從[1,r]這個區間中有9個覆蓋

- 但是其中有3個覆蓋完全在l的左側(即右端點在[1,l-1])

- 所以應該只有6次覆蓋在[l,r]範圍內

- ∴ans=6

我們可以發現,這是乙個區間覆蓋的問題,詢問的答案是[1,r]中的種類數減去[1,l-1] 中的右端點數…

然後此題就淪為了一道區間和單點修改單點和區間查詢的題目…

我們可以用兩個不同的資料結構來分別維護右端點數目和種類數…我們整理了一下發現:

- 對於右端點,我們修改的時候在右端點單點加,查詢的時候區間查詢[1,l-1]..

- 對於種類數,我們修改的時候做區間加,往區間[l,n]加上,查詢的時候單點查r點的值..

所以,乙個單點加區間查,乙個區間加單點查,就是這樣兩個樹狀陣列的基本操作了…

而區間操作都是含1和n的,所以我們就可以省掉一些步驟..

最後寫出來就是這樣:

#include 

const

int n=101010;

inline

int gnum()

int t[2][n],n,m;

void add(int *c,int x)

int query(int *c,int x)

int main()

}

這樣就可以咯~

學術篇 SDOI2008 山賊集團

今天一月一號.突然想安利一波我的中二的2017總結.傳送門1 codevs 傳送門2 luogu 時限5s和1s的區別 你沒看我傳送門都給的大牛分站了 現在不僅線篩.有負數的快讀都打不對了.來比較一下他們的區別?inline int gn int a 0,char c 0,int f 1 inlin...

學術篇 網路流24題 餐巾計畫問題

傳送門 luogu2776 餐巾計畫問題 挑戰之傳送門 luogu1251 餐巾 這題非常經典啊。不過還是要吐槽一下luogu1251喪心病狂的資料,我3s竟然tle了,我覺得得花式壓壓常了,但是在luogu2776a了,本蒟蒻就勉強貼過來了。更新 luogu大牛分站提交自帶o2,於是就過了 題目大...

學術篇 網路流24題 騎士共存問題

啥也不說,先上傳送門 luogu3355 顯然,騎士的步伐有很好的性質 如果我們為棋盤黑白染色,騎士每一步只會從黑格走到白格,或從白格走到黑格。這一點下過西洋棋的人都知道,沒下過的畫一畫也知道 所以我們把棋盤黑白染色,依次標號,然後將障礙格去掉 單獨處理 我們建立源點s和匯點t,從s向所有黑格依次連...