1 条题解

  • 0
    @ 2023-2-24 20:54:06
    #include<bits/stdc++.h>
    using namespace std;
    int s[500001],n,a,b,k,y,t; 
    bool check(int x)
    {
    	k=0;
    	for(int i=1;i<=n;i++)
    	{
    		int t=s[i]-x*a;
    		if(t<=0) continue;
    		int y=t/b;
    		if(t%b!=0) y++;
    		k+=y;
    		if(k>x) return false;//小优化 (不写也行) 
    	}
    	if(k<=x) return true;
    	else return false;
    }
    int main()
    {
    	cin>>n>>a>>b;
        for(int i=1;i<=n;++i) scanf("%d",&s[i]);
    	int l=0,r=500001;
    	while(l<r)
    	{
    		int mid=(l+r)>>1;
    		if(check(mid)) r=mid;
    		else l=mid+1;
    	}
    	printf("%d",r);
    	return 0;
    }
    

    不难,多想想就行 看不懂可以问我~(真的不想写注释了qwq,回头有时间了我再写)

    • 1

    信息

    ID
    1706
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    9
    已通过
    4
    上传者