社区讨论
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 条回复,欢迎继续交流。
正在加载回复...