雜題總結 Vol.4

haozexu發表於2024-09-26

雜題總結 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]\)

  1. 若有互相包含的區間則不存在

  2. 若有互相相交(可以共端點)則不合法。特別地,右端點是同一個值的情況是不算的。

  3. 對於右端點是同一個值的情況,保留最大的一個不影響答案

考慮採用反悔貪心,將右端點重複的區間去重之後按照左端點排序。考慮我們需要限制一個字首的最大值的最小值,我們發現:

  • 對於 \([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\)


考慮有貪心結論:

  1. 最小遍歷次數為葉子數量。

  2. 最優藥水數量可以這樣構造:從下往上收集藥水,優先消耗子樹中葉子數量收集更深的藥水。

考慮原因。由於越深的藥水 \(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\)

有一個觀察是:實際上奶牛遇到奇數長度的邊的時候就會轉向。

另一個觀察是:奇數邊都是一排一排一列一列出現的。

那麼我們可以對每一個詢問採用倍增。