头像

欢迎来到我的博客

分享题解与总结

P1824 进击的奶牛 Aggressive Cows G

image

思路:

二分答案

1.最优解

2.设置距离的距离越大,能放的牛棚总数越少——单调性

3.向右找,检查当前mid能放下m头奶牛,则合适(保留给左端点)

#include<bits/stdc++.h>
#define MAXN 100005
using namespace std;
int n,m,x[MAXN],lft,rgt,mid;

bool check(int num)//num=mid 表示当前宽度
{
	int lst=1,cnt=1;
	for(int i=2;i<=n;++i){
		if(x[i]-x[lst]>=num){//如果距离合适 此牛棚可以放牛
			cnt++;
			lst=i;
		}
	}
	return cnt>=m;
}

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;++i)
        scanf("%d",&x[i]);
	sort(x+1,x+n+1);
	lft=1,rgt=x[n]-x[1];
	while(lft<rgt){//向右找
		mid=(lft+rgt+1)/2;
		if(check(mid))
            lft=mid;
		else
            rgt=mid-1;
	}
	cout<<rgt;
	return 0;
} 
posted @ 2026-02-10 20:26  king_steph1209  阅读(16)  评论(0)    收藏  举报