2024.10.18模擬賽反思

gevenfeng發表於2024-10-18

2024.10.18模擬賽反思

感覺今天狀態不太好,整個人比較恍惚。早自習我都不知道在幹什麼,考試的時候腦子裡也是一團糨糊(晚上提前到 \(12\) 點睡覺,結果狀態更差了)。

首先是 \(T1\),開始我以為簡單無向連通圖的“簡單”是指的仙人掌,所以想了一個點雙的做法。寫到一半發現做法複雜了,用最小生成樹就行,而且點雙的做法僅適合仙人掌,不適合一般無向圖,所以就換了一個最小生成樹。賽後證明簡單無向連通圖是指不存在重邊、自環的無向圖,還好寫了最小生成樹這個普適性比較廣的做法,不然今天就爆完了。耗時 \(1 \operatorname{h}\) 多一點(這個題都能做一個多小時)。

然後是 \(T2\),開始想了一個自己覺得很對的貪心做法(其實正解也可以說是貪心,只不過和這個不一樣),就是找被覆蓋次數最多的點加進答案裡,然後將經過它的還沒有被刪除的路徑刪除。但是找與某個點相關聯的路徑不好找,而且賽後評測說明這個貪心是錯的。我也不知道怎麼了,樹上的問題我居然沒往 \(LCA\) 的方向想,想的時候一直在想貪心,從來沒想過換過方向。正解主要依賴一個結論:選擇的點一定是某些路徑兩端的 \(LCA\)。然後求出每條路徑兩端的 \(LCA\),再把這些 \(LCA\) 按深度從大到小排序,最後如果一條路徑還沒有覆蓋到,就把它的 \(LCA\) 標記一下就行了,可以使用樹上差分,時間複雜度 \(O(n \log n)\)

\(T3\) 本來應該是我比較擅長的東西,但是今天沒做出來。而且最開始題意理解錯了,導致暴力分沒拿全,只拿到了 \(l_i = 1\) 的分(前面沒看清楚這裡就看清楚了)。正解比較簡單,可以將問題離線,然後將右端點排序,問題就轉化為了能不能在某段字首選取一些區間滿足 \(a_i \geq l_i\),使得可以不超出範圍地完全覆蓋整段區間。這個東西用一顆線段樹維護就行了,對於每個位置儘量選能覆蓋到它的最大的 \(a_i\),最後判線段樹上 \([l_i,r_i]\) 這段區間的最小值是否等於 \(l_i\)。本來應該是一道比較簡單的資料結構題,可是一直沒往正確的方向上去想

\(T4\) 一看就不可做,直接就跳了。正解是對於各種情況進行一些分討,比如說葉子和根的情況。這道題比較難,沒做出來也比較正常。

總的來說,可能今天的狀態確實不太良好,影響了一些發揮(考試的時候腦子裡感覺空蕩蕩的)。但是問題不只有這一個,還有一些其他的問題:

  • 一些有段時間沒見過的套路感覺有所遺忘,\(T2\) 這種樹上的東西在沒有其他做法時應該往 \(LCA\) 想一下,還有 \(T3\) 這種線上不好處理的就可以嘗試離線做法。這可能是長時間沒做過這種題導致的,所以學的時候一定要學紮實,然後之後要進行一些及時的複習。
  • 好像出現了一個很久都沒出現過的問題,就是一個思路行不通的時候我也沒有嘗試換思路,就一直死磕(\(T2\) 表現得尤其嚴重,\(T3\) 也有一點)。這樣是不行的,因為出題人指不定就會讓正解比較非常規/某些思路完全做不出來,導致死磕半天大機率都沒用。所以說當一個思路想了很久都沒有進展時可以換一個思路再想,說不定就想出來了,大不了重新回頭再想原來的思路,前提是每種思路在自己不確定是對的情況下都不能花太久。

希望以後都不要再出現這種比較低階的錯誤(看來其他錯誤比較高階)了,因為這有可能會讓我在完全有可能做出來一道題的情況下只取得很低的分數。而且希望堅決不要把這些問題帶到 \(CSP\) 考場上,不然就憑我這個分數感覺二等都懸。