20240713總結(搜尋專題,但是不想搜尋)

星河倒注發表於2024-07-15

A - Dima and Trap Graph

CF366D Dima and Trap Graph
題解:考慮二分滿足答案區間,但是發現這個區間並不具有單調性。於是我們考慮固定一個端點(不妨固定左端點),然後二分右端點,此時右端點是有單調性的。

然後思考如何判斷是否聯通。這題可以直接使用並查集,把在當前判斷的區間內的邊並起來,最後看看 1 節點和 n 節點是否聯通即可。

但是我本人的程式碼成分複雜,dfs剪枝也有,並查集也有。

B - Salazar Slytherin's Locket

CF855E Salazar Slytherin's Locket
題解:數位DP板子題,沒什麼好說的。

C - DZY Loves Colors

CF444C DZY Loves Colors
題解:管他那麼多,我直接大力分塊:

  • 1.對於修改,對於左右端點的塊下放tag,把記錄塊內是否為同色的標記記為false(雖然這個塊仍然可能是同顏色的,但是當作不是總沒錯,整塊答案和單點答案都要修改),然後對於中間每一個同顏色的塊打tag(記得修改整塊答案),對於不是同顏色的塊暴力修改
  • 2.對於查詢,整塊直接加答案,散點不要忘記加上對應塊的tag

然後分塊比ODT快,但是好像也是顏色段均攤?

D - Distinct Paths

CF293B Distinct Paths
題解:詐騙題,按照題目的意思,若有解,則:(n+m-1<=k),不然顏色就放不下了。

然後考慮搜尋,但是肯定不能全部搜完,會TLE。

我是怎麼知道的?(去CF找一份AC程式碼,發現下面的資料答案太大)

k很小,先壓縮一個狀態表示當前使用過的顏色。然後考慮對於每一個格子,如果沒有放過顏色,那麼從剩下的顏色中隨便放一種本質是相同的,計算一次後直接累加答案即可。

E - The Great Mixing

CF788C The Great Mixing
題解:既然是搜尋專題,我自然不會寫搜尋,但是還是先分析一下題面。

我們發現值域只有1000,卻有1e6種汽水?所以先去重。然後把所有濃度減去n,把題目轉化為調濃度和為0的汽水。

直接揹包,dp[i+maxn]表示濃度和為i的最小消耗的汽水瓶數(因為有負數,統一加一個maxn),但是要注意當前濃度為正數和為負數的轉移順序不一樣。

經過測試,陣列開6e5,maxn開3e5能過。

F - Rats

CF254D Rats
題解:又是詐騙題,手動模擬發現一個炸彈最多炸到290個左右的老鼠,所以大於600只肯定炸不掉,先判掉。

然後直接從每隻老鼠的位置開始搜哪些位置能炸掉這隻老鼠,列舉位置,但是別忘了判掉只有一個位置能放炸彈的情況。

相關文章