求助 这里为什么要减一
查看原帖
求助 这里为什么要减一
150467
never_turn_right楼主2021/1/26 15:28

如题 下面代码中这个位置

cout<<ef(1,as)-1;

面向样例编程时加进去的 竟然ac了 但是我并不知道为什么 求助大神

#include<iostream>
using namespace std;
int n,k,ym[100001];
bool check(int cd)
{
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		ans+=ym[i]/cd;
	}
	return ans>=k;
}
int ef(int l,int r)
{
	if(l==r) return l;
	int mid=(l+r)/2;
	if(check(mid))
		return ef(mid+1,r);
	else 
		return ef(l,mid);
}
int main()
{
	cin>>n>>k;
	int as=-1;
	for(int i=1;i<=n;i++)
	{
		cin>>ym[i];
		if(ym[i]>as)
			as=ym[i];
	}
	cout<<ef(1,as)-1;
	return 0;
}
2021/1/26 15:28
加载中...