现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了
不懂为什么()