UPC 栓奶牛 二分法

2021-10-01 02:53:36 字數 1167 閱讀 7893

有n頭奶牛(2≤n≤100),有k個木樁(n≤k≤100),每個木樁有乙個位置,乙個木樁上只能拴一頭奶牛。由於奶牛好鬥,所以在拴奶牛的時候要求距離最近的奶牛的距離盡可能大。

輸入1行:n,k,p1三個整數(0≤p1≤100),其中p1為第1個木樁的位置,其他木樁pi (i≥2)的位置由下面公式給出:

pi=pi-1+((pi-1×2357+137) mod 10)+1

輸出

乙個整數,即奶牛最近距離的最大值。

樣例輸入

25 70 99

樣例輸出

12

當奶牛之間的距離越大時,能栓奶牛的數量越少,越往右走奶牛之間的距離越大,可以採用二分的方法,將最小距離定位1,算出最大距離進行二分

二分模版,不同題目l和r的變化可能不同

int l=1;

int r=p[k]

-p[1

],ans;

while

(l<=r)

else

}

對二分後的結果進行判斷,可以栓的奶牛數量是否大於或等於所有數量,找出最小距離的最大值。

ac碼:

#include

using

namespace std;

int n,k,p[

9999

],ant;

boolpk(

int t)

ans++

; now=nxt;}if

(p[nxt]

-p[ant]

ans --

;return ans >= n;

}int

main()

else

} cout << ans;

return0;

}

當判斷到最後一項時nxt的值會超出範圍,最後一項進行了特判。

樣例:25 70 25

124 6 0

88 16 2

8

UPC 栓奶牛 二分法詳解

栓奶牛 二分 題目描述 有n頭奶牛,有k個木樁,每個木樁有乙個位置,乙個木樁上只能拴一頭奶牛。由於奶牛好鬥,所以在拴奶牛的時候要求距離最近的奶牛的距離盡可能大。例如n 4,k 6,木樁的位置為0,3,4,7,8,9 如最下面的圖 此時,有許多拴牛方案,例如 0,3,4,9 此時最近距離為1 3,4之...

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...