雜題總結 Vol.4
試題總結 2
Status: OPEN
\(\def\EZ{\textcolor{#51af44}{\text{EZ}}}\EZ\) 表示簡單,10分鐘內就能想到。
\(\def\HD{\textcolor{#3173b3}{\text{HD}}}\HD\) 表示中等,能獨立想出
\(\def\IN{\textcolor{#be2d23}{\text{IN}}}\IN\) 表示困難,獨立思考能想到 \(50\%\) 以上
\(\def\AT{\textcolor{#383838}{\text{AT}}}\AT\) 表示非常困難,獨立思考只能想出 \(50\%\) 以下
USACO24JAN [2024-09-26]
P10134 [USACO24JAN] Cowmpetency S
\(\HD\)
細節較多的貪心題。但是仍然是一道非常不錯的題目。
考慮要發現如下性質:以下“區間”均指代 \([a_i,h_i]\)
-
若有互相包含的區間則不存在
-
若有互相相交(可以共端點)則不合法。特別地,右端點是同一個值的情況是不算的。
-
對於右端點是同一個值的情況,保留最大的一個不影響答案
考慮採用反悔貪心,將右端點重複的區間去重之後按照左端點排序。考慮我們需要限制一個字首的最大值的最小值,我們發現:
-
對於 \([a_i,h_i]\) 若 \(a_i\) 前面沒有可以調整的數(i.e. \(\forall j\le a_i,c_j\neq 0\)),則無解
-
否則如果 \(\max_{j\in[1,a_i]}<\max_{j\in(a_i,h_i)}c_j\) 只需要將最後一個 \(0\) 的下界以 \(\max_{j\in(a_i,h_i)}c_j\) 更新,記該下界為 \(req_j\)
然後你就會發現你 WA 了。。
重新觀察以上步驟,如果之前已經限制過 \(c_i\ge req_i\),那麼這個限制值也要考慮在內,若當前掃描到第 \(i\) 個區間,記 \(s=\max_{j\in[1,a_i]}req_j\),則當 \(\max\{s,\max_{j\in[1,a_i]}\}<\max_{j\in(a_i,h_i)}c_j\) 才將上一個 \(0\)(位置記作 \(x\) )的 \(req_x\) 值以 \(\max_{j\in(a_i,h_i)}c_j\) 更新,然後令 \(s\leftarrow \max\{s,req_x\}\)。
P10135 [USACO24JAN] Potion Farming S
\(\EZ\)
考慮有貪心結論:
-
最小遍歷次數為葉子數量。
-
最優藥水數量可以這樣構造:從下往上收集藥水,優先消耗子樹中葉子數量收集更深的藥水。
考慮原因。由於越深的藥水 \(y\) 就越少有葉子能夠收集他,而若有藥水 \(x\) 是 \(y\) 的祖先,那麼顯然能夠收集 \(y\) 的葉子必然能夠收集到 \(x\),如果最優方案是放棄 \(y\) 而收集 \(x\),那麼用能夠收集 \(y\) 的葉子改為收集 \(y\) 必然不劣,因為這樣其他更淺的葉子就有了利用的機會。
P10136 [USACO24JAN] Cowlendar S
\(\HD^{+}\)
缺了一步,想到做差和列舉因數,但是沒想到抽屜原理。
有一個巧妙的想法,那就是如果我們考察兩個數的差值,那麼應該把原序列能夠分成三組,每一組當中兩兩的差都是可能的 \(L\) 的倍數。
但是,難蚌的是,你不可能列舉哪兩個是可能的同餘的數。
由於取模形成了一個有限的空間,我們常常要考慮抽屜原理。如果有四個不相同的數,那麼在合法的方案下,一定有兩個數是同餘的,那麼我們只需要嘗試 \(6\) 個可能的差值然後用試除法列舉因數, \(\mathcal O(n)\) 檢驗即可。
其實難點主要在於第一步轉化
P10137 [USACO24JAN] Walking in Manhattan G
\(\HD\)
有一個觀察是:實際上奶牛遇到奇數長度的邊的時候就會轉向。
另一個觀察是:奇數邊都是一排一排一列一列出現的。
那麼我們可以對每一個詢問採用倍增。