二分貪心 E

2021-07-31 13:05:16 字數 657 閱讀 7534

題目:輸入n和c,n代表有n間屋子c代表有c頭牛,然後輸入n個數代表這n間房子的座標,牛不喜歡這個布局,一進去就會很暴躁,所以要把牛分的盡可能的遠求最近兩頭牛的最大距離。

解題思路:建立乙個陣列存這些房子的座標,然後用sort將這些座標排序,然後令l=0,r=a[n],mid=(l+r)/2,先用mid當作最大的最小距離若兩個房子距離大於等於mid時放一頭牛,定義m=1,放一頭牛m++,到最後比較m與c,若m大於c則l=mid反之r=mid,當l+1>=r時結束迴圈,輸出結果。

細節處理:定義乙個函式來幫助解題

**:#include

#include

using namespace std;

int n,c,a[100001];

bool go(int x)

if (m>=c)

return true;

else

return false;

}int main()

{int l=0,r,mid;

int i,m=1;

scanf("%d%d",&n,&c);

for(i=1;i<=n;i++)

scanf("%d",&a[i]);

sort(a+1,a+1+n);

r=a[n];

while(l+1

E簡單二分查詢

簡單二分查詢 面對二分查詢,主要是你的思路 第一步 你得把陣列有序的排列,一般選擇從小到大。第二步 把l,r,m確定下來。然後看看你得key 如果,key m,你運氣太好一下子就找到了 如果,key如果,key m,此時你考慮在你的右邊找。從小到大排列為例 第三步 迴圈著,就看你的結束條件了,當然了...

二分貪心 21

題目大概 有n堆積木,積木高度不同,每個小方塊高度相同。問,最少移動多少小方塊,使得這些積木堆高度相等。思路 先求這些積木的平均數,在把所有的高度與平均數的差值加起來,最後除2,就是最少移動的方塊數。感想 這個題有一點很坑人,最後輸出的時候有乙個小點,不注意看看不到。include include ...

二分貪心 T

題目 有1 1,2 2,3 3,4 4,5 5,6 6大小的盒子,要把它們裝到6 6的盒子裡,它們的高度都是相同的,用最少的6 6盒子把所有尺寸的盒子都裝起來。解題思路 6 6,5 5以及4 4尺寸的物品每個物品需要占有乙個箱子,3 3的物品乙個箱子可以放4個,2 2的物品箱子可以放9個,1 1的可...