二分答案解題技巧

KS_Fszha發表於2024-07-23

二分答案有一個很顯著的特徵:一定存在一個臨界值,單調性只是臨界值的一種,而不是全部。

臨界值,就是尋找第一個/最後一個滿足要求的值,這又分別對應著兩個完全不同的二分模板,這裡做題時推薦使用“第一個滿足要求的值”,即對應著 STL 中的 upper_bound ,手寫板對應著 這篇文章 裡講的模板。

標誌詞

一些標誌性詞語:

  • 最大值
  • 最小值
  • 最大化最小值
  • 最小化最大值
  • 第一個...
  • 最後一個 ...

進階技巧

一些進階技巧:

  • 對於在某區間記憶體在臨界值或有單調性,但放在全域性看就不滿足的話,可以把全域性分割成幾個小區間,對每個小區間進行二分。如 [ CSP-J 2022 ] 解密 中把一個二次函式以頂點為分界,在左右端分別進行查詢;[ NOIp 2001 提高組 ] 一元三次方程 因為根與根之間的差大於等於 \(1\) ,所以可以每隔 \(1\) 為一個分界點,對於每個區間 \(1\) 分別進行二分即可。

常見套路

一些常見套路:

  • 二分+貪心的使用,先二分出當前答案,然後進行貪心看是否合法。例如 小鳥的裝置數列分段 II 進擊的奶牛
  • 二分求中位數,原理是大於等於 \(mid\) 的數的個數和大=小於 \(mid\) 的數的個數的關係進行二分,例如 最大戰力 (題解)
  • 二分+判斷答案可行性,“判斷答案可行性” 裡可以很多演算法搭配使用。例如 汽車拉力比賽營救

相關文章