不要过于沉溺过去,也不要过于畅想未来,把握现在!

B二分

<span style="color:#330099;">/*
B - 二分 基础
Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
Submit
 
Status
Description
Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0 <= xi <= 1,000,000,000). 

His C (2 <= C <= N) cows don't like this barn layout and become aggressive towards each other once put into a stall. To prevent the cows from hurting each other, FJ want to assign the cows to the stalls, such that the minimum distance between any two of them is as large as possible. What is the largest minimum distance?
Input
* Line 1: Two space-separated integers: N and C 

* Lines 2..N+1: Line i+1 contains an integer stall location, xi
Output
* Line 1: One integer: the largest minimum distance
Sample Input
5 3
1
2
8
4
9
By Grant Yuan
2014.7.15
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int a[100002];
int n,c;
int d;
int l,r;
int top;
bool can(int k)
{  //cout<<"k"<<k<<endl;
    int last,sum,sta;
    sta=0;
    sum=1;
    for(int i=1;i<n;i++)
      {
          if(a[i]-a[sta]>=k)
           {//cout<<" i"<<i<<" sta"<<sta<<endl;
                sum++;
               sta=i;
           }
      }
      //cout<<"sum"<<sum<<endl;
      if(sum>=c)
         return true;
     else
         return false;
}

int main()
{   int i;
    int num;
    int last;
    while(~scanf("%d%d",&n,&c)){
   // cin>>n>>c;
    for(i=0;i<n;i++)
       cin>>a[i];
    //top=i;
    sort(a,a+n);
    l=a[0];r=a[n-1]+1;
    int mid;
    while(r-l>1){
        mid=(l+r)/2;
       if(can(mid)){
           l=mid;
           }
        else
        {
             r=mid;
        }
  }
cout<<l<<endl;

}  }
</span>

posted @   coding_yuan  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
阅读排行:
· 想让你多爱自己一些的开源计时器
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 大模型 Token 究竟是啥:图解大模型Token
· 用99元买的服务器搭一套CI/CD系统
· 如何在 .NET 中 使用 ANTLR4

不要过于沉溺过去,也不要过于畅想未来,把握现在!

点击右上角即可分享
微信分享提示