瞌睡小源


私信TA

用户名:H2130823055

访问量:4793

签 名:

我が名はめぐみん、爆裂魔法を操りし者

等  级
排  名 45
经  验 11493
参赛次数 5
文章发表 76
年  龄 0
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

解题思路:又是一道二分答案,用for循环一个一个穷举会超时,这里用sort拍好栅栏的序,然后判断当前的mid能装多少头牛,多了就说明可以继续降低距离,少了就增加距离

注意事项:

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,c;
	cin>>n>>c;
	int x[n+5];
	for(int i=0;i<n;i++)
	{
		cin>>x[i];
	}
	sort(x,x+n);
	int l=x[0],r=x[n-1];
	while(l<=r)
	{
		int mid=(l+r)>>1;
		int sum=1;
		int flag=0;
		for(int i=0;i<n;i++)
		{
			if((x[i]-x[flag])>=mid)
			{
				flag=i;
				sum++;
			}
		}
		if(sum<c)
		{
			r=mid-1;
		}
		else if(sum>=c)
		{
			l=mid+1;
		}
		flag=0;
		sum=1;
	}
	cout<<r<<endl;
	return 0;
}


 

0.0分

4 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

不好
2023-02-26 18:58:58
  • «
  • 1
  • »