AGC025簡要題解
B RGB Coloring
一道簡單題,枚舉即可。
C Interval Game
考慮可以進行的操作只有兩種,即左拉和右拉,連續進行兩次相同的操作是沒有用的。
左拉時肯定會選擇右端點盡量小的,右拉選擇左端點盡量大的,所以排序之后貪心即可。
D Choosing Points
首先證明對於所有\(d\),假設讓兩個不能同時選的點之間連一條邊,那么結果是一張二分圖。
\(d\)是奇數可以黑白染色,\(d\)是偶數的時候,顯然連邊的兩點在同一個顏色內。那么我們可以只考慮這個顏色,獲得一個新的網格圖,這個網格圖的邊長較大,這時可以讓\(d\)相應縮小,最終\(d\)會變成奇數。
考慮構造出兩張二分圖,然后就可以把點分為4種,即在兩張圖內分別屬於哪一邊。點數總共\(4n^2\),所以至少一種滿足答案。
E Walking on a Tree
首先考慮每條邊有多少條路徑經過它,這樣可以得到一個答案上界是\(\sum{min(2,ti)}\)。實際上這個上界一定能被構造出來。
這種題有一種很經典的想法,就是刪去葉子,使得圖的規模變小,那么我們就每次考慮一個葉子節點\(x\)和它唯一的出邊\(E\)。假設\(E\)的經過次數小於2,那么最終無論是什么方向都沒有問題,可以砍短一截;否則任意選擇兩條路徑\(x-y\),\(x-z\),假設這兩條路徑都經過了\(x-a\),那么我們可以令這兩條路徑方向相反,使得\(x-a\)一定被雙向經過,這兩條路徑就變成了\(y-z\)的未定向路徑。這兩條路徑以外的路徑同理砍短一截即可。這樣重復\(n-1\)次就能找到最優解了,復雜度O(nm)。
F Addition and Andition
從低位開始一位位考慮吧,對於每一位,求出它進行了哪些加法操作和每次操作的時間,不難求出最后的狀態。
復雜度顯然不對,考慮優化。定義勢能函數等於兩倍的\(01\)或者\(10\)加法操作的數量加上三倍的\(11\)加法操作的數量,考慮加法時可能遇見的情況。
假設加上\(01\)或者\(10\),那么暴力做一定沒問題,因為這樣相當於用兩次這種操作換來一次進位的加法,勢能函數至少減去1。
假設加上\(11\),那么有兩種情況。如果之前是\(01\)或者\(10\),那么相當於\(11\)變成\(01\)或者\(10\),勢能函數減少。假設是\(00\),那么這么做不改變勢能函數,所以考慮把連續的一段\(11\)用鏈表接起來縮成一段,這樣就可以\(O(1)\)處理一整段,顯然段數和\(01\)與\(10\)的總量是同一個級別的。
這樣暴力的做法通過簡單的縮段就變成\(O(n)\)的了。
(我從來沒學過勢能函數,只知道有這個東西,如果是我亂用了,呃…你理解就好了)