APIO2020 遊記
一早上趕緊起來準備裝置 到了8:55進到騰訊會議發現筆記本的前置攝像頭bz了 趕緊換了另外一臺筆記本(所有的板子都沒了)
開場先把3題都看了一遍。。。感覺一題都不可做啊
T1
先看T1 不太明白那個 \(\sum f(i)^2 \le 400000\) 的意義何在
發現如果知道了對於哪些 \(y\) 存在合法的染色方案,那麼就可以直接進行dp,套一個單調佇列就是 \(O(n)\) 的
一開始寫了個set
來存對於每一面牆,有哪些染色公司可以染它 然後暴力處理哪些 \(y\) 有合法染色方案
但是set
實在是太慢了 只過了2,3兩個子任務
然後試圖換成bitset
,開了bitset<100005> b[100005]
然後發現直接用陣列存就好了 每次新加入一堵牆和刪除一堵牆時更新一下 這樣就過了前4個子任務
發現對於顏色一樣的牆,能染它們的染色公司也一樣,所以只用處理每種顏色有哪些公司能染 然後加了一些玄學剪枝就AC了。。。???
T2
T2第一眼看好像是和雙連通分量之類的東西有關,然後照著樣例試了下結論發現不太對。。。
然後感覺非常的不可做 看了下子任務,subtask1是鏈或環 subtask2是菊花圖。。。好像挺簡單?就是才13pts。。。
T3
所以就先去看T3了 作為一名只在CF做過互動題的選手,不太知道互動題該怎麼入手。。。
不過前兩個subtask還是比較簡單的,直接暴力詢問 \(n^2\)
然後就從樹的直徑的一端開始,每次找到樹上離當前點最遠的點作為下一個遊覽點,然後把它刪掉
然後subtask3是棵完全二叉樹,樹的結構已知,似乎可以口胡一下做法?
試了好幾個演算法都不對 最後寫+調了1h調出來了一個挺奇怪挺複雜的找fun路徑的一個演算法 時間複雜度是 \(O(nh)\) 的,其中 \(h\) 是樹高
顯然完全二叉樹的樹高是 \(\log n\) 所以我把這個點過了 加上前兩個子任務就是47pts 開心
然後看subtask4 好像意思是說樹有一個根並且點的編號就是dfs序?下面的另外兩個條件看不太懂 所以就棄了這題
T2
然後回頭把T2的前兩個subtask寫了 還被菊花圖卡了半天。。。
寫完發現自己就是個弱雞 T2什麼都想不出來
最後十分鐘想到一個每次刪一個點然後建最小生成樹的玄學演算法 一是不知道正確性 二是隻剩10分鐘了 所以就沒去寫了
最終得分100+13+47=160
最後吐槽一波 IOI賽制是真的香 要不是IOI賽制說不定我T3第3個子任務就交一個假演算法上去了
而且當場出成績這個必須好評