萌新求助,这题不能用二分吗?
查看原帖
萌新求助,这题不能用二分吗?
107620
我太强了楼主2020/11/2 09:02

写的是二分,但是只有80分,现在也没改出来

这题是不能用二分,还是就是我的程序写挂了啊qwq

#include<bits/stdc++.h>
using namespace std;
int m,s,c,l,r,mid,ans=2147483647,a[205];
bool check(int maxx) 
{ 
	int now=0,cnt=0,sum=0;
	now=1; cnt++;
	for(int i=2;i<=c;i++) 
	if((maxx-now)<(a[i]-a[i-1])) 
	{ 
		cnt++; sum+=now; now=1; 
	} 
	else now+=(a[i]-a[i-1]);
	sum+=now;
	if(cnt<=m) 
	{ 
		ans=min(ans,sum);
		return 1;
	} 
	return 0;
} 
int main() 
{ 
	scanf("%d%d%d",&m,&s,&c);
	for(int i=1;i<=c;i++) scanf("%d",&a[i]);
	sort(a+1,a+1+c);
	l=1; r=s;
	while(l<=r) 
	{ 
		mid=(l+r)>>1;
		if(check(mid)) r=mid-1;
		else l=mid+1;
	} 
	printf("%d\n",ans);
	return 0;
} 
2020/11/2 09:02
加载中...