1.「GXOI / GZOI 2019」「洛谷 P5304」旅行者
Link & Submission.
經典二進位制分組,沒啥好說的。
2. 「SDOI 2019」「洛谷 P5361」熱鬧的聚會與尷尬的聚會
Link & Submission.
隨便拓撲一發可以求到最大的 \(p\),進而得到 \(q\) 的目標值。我一看,精確求 \(q\) 是 NP-Hard?!好的我們 std::shuffle
一發依次選……我焯它過了?
確定性演算法:注意到 \((p+1)(q+1)\ge n+1\),我們每次取 \(\arg\min\{d(u)\}\),將它和它的鄰接點刪掉,嘗試構造獨立集,同時用當前的 \(\min\{d(u)\}\) 和對應的圖更新 \(q\) 度圖,然後發現可行√
如果實現隨意都是 \(\mathcal O(Tm\log m)\) 的。
3. 「LibreOJ NOI Round #1」「LOJ #508」失控的未來交通工具
Link & Submission.
我卡得比較久的地方是第一步轉化的先入為主:覺得這個和同餘最短路相關,繼而想動態維護最短路之類的鬼東西……
圖非常不可做,一般我們選擇將路徑特殊化:變成樹邊 + 環,但惱人的是這個“環”似乎並不獨立於“路徑”,我們必須先走到環上的點才能進入環。聯絡經典的異或路徑問題,可以嘗試一步構造,讓環僅依賴於連通塊存在:若想要加入一個環,我們從路徑上一點從任意路徑走向環,繞一圈,然後在這“任意路徑”上往返 \(m\) 次即可。顯然我們只需要關心所有環長的 \(\gcd\),並查集記錄這一資訊。
對於詢問,可以轉化成求 \(gx+my=\cdots\) 的整數解問題,雖然數學計算的 corner cases 很多但寫題解就不重要了√ 複雜度是 \(\mathcal O(q\log V)\)。