The 3rd Universal Cup. Stage 8: Cangqian
- 連結:https://qoj.ac/contest/1780
- 時間:2025 Apr 2, 07:00-12:00
- 團隊:SorahISA
- 成績:5 / 13, Penalty 596, dirt 44% ( A B C D E F G H I J K L M )
在 A 大坐牢,寫了 python 不知道為什麼會 RE 卡了一個小時。
Problem A. Bingo
待補
Problem B. Simulated Universe
待補
Problem C. Challenge NPC
Tags: constructive
構造一張簡單無向圖 使得存在一個正整數 滿足最小點著色數 且 greedy 解至少要用 個顏色。
- Greedy 解:對 ,將點 著 的顏色(此處的 為 -based)。
- 、
這麼大,感覺就可以弄一張二分圖做到 跟 ,所以就做完了。
只要把第 小的奇數/偶數連向第 小的偶數/奇數就可以了。
- 因為是二分圖,所以最佳解顯然是 。
- 第 小的奇數/偶數會被 greedy 解填上顏色 。
Problem D. Puzzle: Easy as Scrabble
待補
Problem E. Team Arrangement
Tags: greedy, bit operation
要把 個人分成若干組,第 個人希望自己在的小組有 個人。如果一種分組方法每一組分別有 個人,那麼總價值就是 。
請求出最大價值的分組,或判斷其不可能達成。
- 、
第一直覺是先枚舉每一組的大小,再判斷該分組能不能被達成。 個人的分組數量是 ,而 ,於是大概要一個 的方法來判斷。
最簡單的方法是 greedy:先將區間們依照右界小到大排序,再每次取 的 lower bound 出來。用 multiset 果不其然的吃了 TLE,改成 map 之後有稍微改善,但複雜度仍然有一個 。
注意到這題 ,每一組的大小也只有 以下,可以用一個 uint64_t 來儲存!
- 跟用 map 的做法一樣,存在
(val >> x) & 1。 - 求 的 lower bound 可以用
__builtin_ctzll(val >> l << l)來做,這樣就可以在 的時間內找到。- 注意
__builtin_ctzll(0)會是 undefined behavior,可以特判,或是一開始就放1 << (n+1)進val裡面。
- 注意
於是這樣的複雜度就變成 了。
Problem F. Stage: Agausscrab
水題,跳過
Problem G. Crawling on a Tree
待補
Problem H. Permutation
待補
Problem I. Piggy Sort
待補
Problem J. Even or Odd Spanning Tree
Tags: mst, lca
給一張帶正邊權的 點 邊無向圖 ,求 weight 分別是奇數跟偶數的最小生成樹,輸出 weight 即可(不存在則輸出 )。
- 多筆測資、、
顯然有一邊的答案就是 MST 本身。
- 令 是選了 條奇邊的最小生成樹 weight,如果最小生成樹選了 條奇邊,那答案一定是 或 。
Proof
根據經典 Aliens 題「黑白生成樹」可以證明 有凸性。
- 要得到 只要枚舉樹外邊 跟 路徑上奇偶性相異的最大值換就好。
非常不嚴謹的 Proof
隨意抓一棵最小生成樹 ,其權重是 。
考慮原本 中 路徑上的一條邊 被拔掉,替換成 ,從而使 這條邊成為 路徑的新最大值。把 邊加進來之後的 會變成一棵基環樹,環上包含 三條邊跟其他一些邊。
這樣做會使答案變好的條件是 ,但這種情況下 會是權重更小的 MST,與原假設不符。
應該可以推廣到替換任意條邊的情況,但我推不出來。
順帶一提,官解用「這是擬陣的性質」一筆帶過,但我不熟擬陣不會證。有機會再補證明。
於是只要用 LCA 維護路徑上的奇數 weight、偶數 weight 最大值是多少就可以了。
時間複雜度:。
Problem K. Sugar Sweet 3
待補
Problem L. Challenge Matrix Multiplicatio
待補
Problem M. Triangles
待補