对本蒟蒻代码的疑问
查看原帖
对本蒟蒻代码的疑问
658620
Youth_Glory楼主2023/10/13 23:41

现AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll n,a,b,w[500005];

bool check(ll s){
	ll x,y,cnt=0;
	for(ll i=1;i<=n;i++){
		x=w[i]-a*s;
		if(x<=0)continue;
		y=x/b;
		if(x%b!=0)y++; 
		cnt+=y;
		if(cnt>s)return false;
	}
	return cnt<=s;
}

int main()
{
	cin>>n>>a>>b;
	for(ll i=1;i<=n;i++)cin>>w[i];
	ll l=1,r=500005,mid;
	while(l!=r){
		mid=(l+r)/2;
		if(check(mid))r=mid;
		else l=mid+1;
	}
	cout<<l;
	return 0;
}

一开始我主函数内的while是按二分基本格式写的while(l<=r),但是全超时了

后面看了题解改成了while(l!=r)就AC了

不懂为什么()

2023/10/13 23:41
加载中...