二分法是程式設計中非常常用的一種演算法,比賽中經常會使用到,在我參加的這些比賽裡,幾乎每一場比賽都會有多多少少涉及到二分法的題目。二分法不僅僅是用來比較乙個數在乙個數列裡所處的大小位置,有時候還有很多更巧妙的用法。
需要注意的是,要使用二分法解決的問題,答案一定是隨著已知引數單調遞增或者遞減的,就是說你要尋找的那個解,他的解空間一定是有序的。
比賽中的題目一般都是直接二分搜尋答案,將搜尋的那個值放到乙個函式中進行判定,根據是否滿足條件,調整要搜尋的解空間,判定函式中可能會用到貪心思想。
例題1:大白書《挑戰程式設計競賽》p140
假定乙個解並判斷是否可行
poj 1064
二分cable master
例題2:大白書《挑戰程式設計競賽》p142
最大化最小值,假定解後進行貪心,看是否可行
poj 2456
二分aggressive cows
例題3:hdu 4430 數學+二分,這種題不常見,主要練習upper_bound,lower_bound
直接在一堆數里搜答案,可以用upper_bound,lower_bound
hdu4430 yukari'sbirthday 2012 acm_icpc asia changchun regional contest problem k
intb=*lower_bound(a,a+9,21);
b=lower_bound指標指向的位置的值。
lower指向第乙個大於等於要求的那個點,upper指向第乙個大於要求的那個點
upper_bound(a,a+9,5)-lower_bound(a,a+9,5)可用來求有序陣列中某值的個數
在set,map裡:
a=s.upper_bound(3)//a是乙個指標,s是乙個set或者map
習題1:
poj 3258
二分river hopscotch
習題2:
jnuoj 1151 方杯子,這個題目是我出的,是個公式題,修改一下資料提高一下需要的精度,就需要使用二分了,這個題可以不用做,看一下了解思路就行。
習題集:
見大白書p283
poj 3273
poj 3104
poj 3045
poj 2976
poj 3111
poj 3579
poj 3685
poj 2010
poj 3662
poj 1759
poj 3484
2023年1月總結 二
1 對於商品列表 浮動 應該設定寬高。因為切圖時無法保證一定符合大小 2 學習雅虎14條 3 在寫js jquery時,如果有引用層疊,應該用單引號和雙引號來區別 4 書寫html標記時,用小寫 給所有屬性值加引號。5 屬性塊之間用空格分開 6 所有屬性都需要值,關閉所有標籤,包括空標籤。7 不要在...
2023年1月問題記錄與總結
1.中斷沒有觸發的可能原因 1.從cpu這一端看,本身的中斷開關沒有開啟 2.cpu這一級中斷被其他原因關閉,例如 arm中 cpsr的i 和f位都被遮蔽了 3.從外設的角度,檢查外設的中斷有沒有發出來,發出來了會不會還沒有到達cpu之前就被遮蔽了,這個往往可以檢視 mask 是否設定正確 4.軟體...
2023年1月歷史文章彙總
2017 02 01 機器學習研究會 機器學習研究會 2017年1月1日 推薦 pandas資料處置速查表 學習 決策樹在商品購買能力 案例中的演算法實現 學習 變 貝葉斯 學習 intel 收官開源之作 bigdl 構建在 apache spark 之上的分布式深度學習庫 2017年1月2日 推薦...