这题思路是若衣服的湿度能在自然干的条件下用mid天可以晾干,则不需要使用烘干机,否则就使用烘干机,若使用烘干机还需要考虑使用的烘干机的天数会不会超过mid天,若不超过,则可以缩小mid,看更少的天数是否能够烘干衣服,若超过了,就增大mid,换用更长的天数。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a,b;
int s[500005];
bool check(int mid)
{
int t=0;
for(int i=1;i<=n;i++)
{
if(s[i]<=mid*a) //若可以自然烘干则不用烘干机
continue;
else //不能自然烘干就使用烘干机
{
if((s[i]-mid*a)%b==0) //t是使用烘干机的天数,烘干天数不一定是整数倍
t+=(s[i]-mid*a)/b;
else
t+=(s[i]-mid*a)/b+1;
}
}
return t<=mid;
}
signed main()
{
cin>>n>>a>>b;
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++)
{
cin>>s[i];
}
int l=0,r=1e8,mid;
while(l<=r) //二分查找mid
{
mid=(l+r)/2;
if(check(mid))
r=mid-1;
else
l=mid+1;
}
cout<<l<<endl;
return 0;
}