社区讨论

P4058求调,95分WA#16

灌水区参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m1m4thhg
此快照首次捕获于
2024/09/28 20:32
去年
此快照最后确认于
2025/11/04 18:34
4 个月前
查看原帖
CPP
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
unsigned long long t,maxn,ans=0,n,m;
unsigned long long l,r,mid;
unsigned long long a[112121121],b[121121211];
bool check(unsigned long long x){
    unsigned long long s=0;
    for(unsigned long long i=1;i<=t;i++){
        if(a[i]+b[i]*x>=m){
            s+=a[i]+b[i]*x;
        }
        if(s>=n){
            break;
        }
    }
        if(s<=n){
            return 1;
        }
        return 0;
    
}
int main () {
    cin >> t >> n >> m;
    for(unsigned long long i=1;i<=t;i++){
        cin >> a[i];
    }
    for(unsigned long long i=1;i<=t;i++){
        cin >> b[i];
    }
    l=1,r=1e18;
    unsigned long long p=0;
    if(t==1){
            unsigned long long i;
            if(a[1]>=n){
                cout << 0;
                return 0;
            }
            for(i=1;i<=10005;i++){
                if(a[1]+b[1]*i>=n){
                   printf("%lld",i);
                    return 0;
                }
            }
        }
    while(l<=r){
        mid=(l+r)/2;
        if(check(mid)){
            ans=mid;
            l=mid+1;
        }
        else{
            r=mid-1;
            p++;
        }
    }
    if(p>=10000){
        cout << 0;
        return 0;
    }
cout << ans+1;
    return 0;
}
rt

回复

0 条回复,欢迎继续交流。

正在加载回复...