5 3 1 2 8 4 9
3
二分+貪心!
AC碼:
#include#include #include using namespace std; int num[100005],n,c; int judge(int x) { int cnt=1,temp=num[0],i; for(i=1;i =x) { cnt++; // 牛的頭數加1 temp=num[i]; if(cnt>=c) // 如果在平均最短長度為x時,c頭都能放的下 return 1; } } return 0; } int get_ans() { int l=0,r=num[n-1]-num[0],mid; while(l<=r) { mid=(l+r)/2; if(judge(mid)) l=mid+1; else r=mid-1; } return l-1; } int main() { int i; while(~scanf("%d%d",&n,&c)) { for(i=0;i