傳送
思路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飛的**
#includeusingnamespace
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...