7 14的某毒瘤題 維護佇列題解

2022-04-12 03:02:01 字數 1012 閱讀 3902

傳送

思路by lyd,ych

我們參考選擇客棧的思路,設pre[i]是i前面乙個和i顏色相同的畫筆,col[i]記錄i的顏色

我們發現,當pre[i]我們的問題是區間[l,r]中有多少不同的顏色,也就是統計區間[l,r]中有多少顏色是第一次出現

這樣查詢就被我們切掉了

然後就是令人崩潰的修改。

我們修改乙個點i,需要知道pre[i],滿足pre[j]=i的j,以及更改之後pre[i]是多少

我們可以對每乙個顏色搞乙個set(最多1e6顏色不會爆空間的)。在修改點i的時候,在set裡面找到i的後繼,令pre[i的後繼]=i的前驅,然後把i從原來的set中刪掉,更改col[i]。在新的set裡面更新pre[i]。

注意:每個set要先插入0,inf以防找到一些神奇的玩意。

正解:帶修莫隊我不會

不會差點t飛的**

#includeusing

namespace

std;

inline

intread()

while(ch>='

0'&&ch<='9'

)

return f?-x:x;

}const

int inf=214748364

;set

qaq[1000009

];set

::iterator qwq,www,owo;

int n,m,col[500009],pre[500009],lst[500009

];int

main()

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

if(cz=='r'

) }}

fold的毒瘤題

做法1.可以仿照最小生成樹的kruskal做法,將邊權按照從小到大排序 對於每個詢問 按邊權從小到大依次連線各個邊,同時用並查集維護特殊點的連通性,一旦某條邊加入後,遍歷所有的特殊點發現它們屬於同一集合,那麼答案就是這條邊的邊權 複雜度 o m lo gm q m n 做法2.對於某個權值 x 如果...

plw的晚餐 毒瘤題害我暴0

描述 plw吃完午飯之後,馬上又覺得肚子餓了。他決定馬上從美食區離開,趕往下乙個吃飯地點 香香雞 但是在plw離開離開美食區之前,需要按美食區的規矩畫乙個特殊符號,並且如果是這是第k次離開美食區,就需要畫k倍大小的圖形 輸入多組測試 第一行輸入t t 10 接下來t行,每一行輸入乙個k k 1000...

餓 Course中的某題 DAG

由於涉及了乙個比較常用的演算法,用拓撲排序判斷乙個有向圖是否無環,因此mark下來 include include include include using namespace std const int max 1000 bool graph max max bool visited max i...