有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
樣例輸出當奶牛之間的距離越大時,能栓奶牛的數量越少,越往右走奶牛之間的距離越大,可以採用二分的方法,將最小距離定位1,算出最大距離進行二分12
二分模版,不同題目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 ...