太正经题解|kingdom Game I
2024-06-11 12:57:08
发布于:广东
49阅读
0回复
0点赞
一道小小的二分,check函数也不是很难写,代码:
#include <iostream>
#include <algorithm>
using namespace std;
const int N=2e5+5;
int w[N],v[N];
int A(int n,long long m,long long x) {
long long sum=0;
for (int i=1;i<=n;i++) {
if (x<w[i]) {
sum-=v[i];
}else {
sum+=(x/w[i])*v[i];
}
}
if (sum>=m) return 1;
return 0;
}
int main() {
int n;
long long m,l=1e18,r=4e4,ans=2e18;
scanf("%d %lld",&n,&m);
for (int i=1;i<=n;i++) {
scanf("%d",&w[i]);
l=min(l,(long long)w[i]);
}
for (int i=1;i<=n;i++) {
scanf("%d",&v[i]);
}
while (l<=r) {
long long mid=(l+r)>>1;
if (A(n,m,mid)==1) {
ans=min(ans,mid);
r=mid-1;
}else {
l=mid+1;
}
}
printf("%lld",ans);
return 0;
}
全部评论 1
一本正经的看你题解,嗯,我没开long long啊啊啊啊啊
2024-06-11 来自 广东
0十年oi一场空,_______________。[doge]
2024-06-11 来自 广东
0
有帮助,赞一个