Aggressive cows

橙三吉。 提交于 2019-12-22 16:07:25

在这里插入图片描述
基本的二分题目,check()函数中对每一个牛棚与其前一个牛棚距离和枚举的距离mid比较如果大于等于mid,则可以放一头牛,最后对放的牛数量与要求放的牛数量比较

#include<bits/stdc++.h>
using namespace std;
int n,c;
int a[1000005];
int check(int mid)
{    
     int pre=a[0],num=1;
     for(int i=1;i<n;i++)    
     {        
          if(a[i]-pre>=mid)        
          {            
               num++;            
               pre=a[i];        
          }    
     }    
     if(num>=c)        
     	return 1;    
     return 0;
}
int main()
{         
     int ans=0;    
     cin>>n>>c;    
     for(int i=0;i<n;i++)         
          cin>>a[i];    
     sort(a,a+n);    
     int l=0,r=1000000000/c;    
     while(l<r)    
     {        
          int mid=(l+r+1)/2;        
          if(check(mid))        
          {            
               l=mid;        
          }        
          else            
               r=mid-1;    
     }    
     printf("%d",r);    
     return 0;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!