1. 程式人生 > 其它 >雜題收錄+簡要題解

雜題收錄+簡要題解

這還能寫啥啊。tag懶得更新了。

Luogu-P2472 [SCOI2007]蜥蜴

一個網格圖,每個格點有一個高度,有一些位置有一些蜥蜴,每隻蜥蜴可以往外跳到歐幾里得距離不超過 \(d\) 的任意一個格點上。一隻蜥蜴從一個格點離開後,這個格點的高度會減少1.問最少多少隻蜥蜴跳不出網格圖。

考慮建立網路流模型。相當於每個點有一個經過次數,問有多少個點能走出去。所以只用原點連蜥蜴在的點,網格圖中距離不超過 \(d\) 的兩個點兩兩相連,能走到外面的點連向匯點。然而這樣並不能體現一個點最多經過的次數,所以考慮拆點,每個點拆成兩個點,兩個點之間連上最多經過的邊數。跑最大流即可。
程式碼沒寫。

CF600E

一個 \(n\) 個點的有根樹,每個點有一個顏色,求每個子樹內出現次數最多的顏色編號只和。
學了一下 \(\text{dsu on tree}\)

。這是一個很有意思的東西。其實是某種資訊的重複利用,具體來說就是對於一個點 \(u\)\(u\) 重複利用 \(u\) 的中兒子 \(son_u\) 上統計的資訊。其他輕兒子直接暴力。

考慮這樣做的複雜度分析。對於一個點而言,他會被遍歷到的次數是有限的。具體來說,他被遍歷到的次數其實就是他祖先中一共有多少個點是父親節點的輕兒子。然而是一個輕兒子字數大小就至少翻倍,所以一個點被遍歷的次數最多是 \(\log_2 n\)