日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.4 二分答案

發布時間:2025/6/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.4 二分答案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二分答案可以用于處理一系列涉及最大值最小值的問題,但是有一個嚴格的前提,就是答案需要擁有單調性。

這類型問題往往需要先求解出一個中間值,然后在求解答案,或是答案與某個不定的中間值有關。因此使用其他算法較難求解。

二分答案的基本代碼有很多種,存在細微差別

第一種是這樣的:

while (l<r) {mid=(l+r+1)>>1;if (check(mid)) r=mid;else l=mid+1; }

這里我們不單獨進行答案的記錄,直接保存在l里面。

有幾個細節需要注意:

  • mid=(l+r+1)>>1
  • 如果最后是2和3,那么mid=(l+r)>>1會卡死在2。

  • r=mid
  • 這里是在求最小值的時候這么寫,最大值就是l=mid

    如果寫r=mid-1或者l=mid+1就會把確認正確的答案mid給排除,不可取。

    第二種寫法是這樣的:

    while (l<=r) {int mid=(l+r)/2;if (check(mid)) ans=mid,r=mid-1;else l=mid+1; }

    這就是記錄答案版本的二分,由于我們每一次發現可行解的時候都把他記下來,所以收縮邊界的時候就不需要保留了。

    二分的邊界問題是大部分錯誤的原因,在出現邊界問題的時候可以手造小數據,然后模擬程序跑幾遍。

    當然如果還是不行就最好重構了

    轉載于:https://www.cnblogs.com/ilverene/p/11135224.html

    總結

    以上是生活随笔為你收集整理的7.4 二分答案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。