补题cf div4f boss 二分答案
作者:
多米尼克領主的致意
,
2024-06-12 00:06:22
,
所有人可见
,
阅读 6
感觉像dp尤其是 n和h的和加起来不超过2e5这一句 太dp了
但是不知道冷却怎么处理
题目读假了 以为是每回合只能用一个技能 tmd
每回合所有技能都能用 直接二分答案就行
code: wa18是ans 爆longlong了 每次计算判断就行
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
int t;
int h, n;
vector<ll>a(N);
vector<ll>b(N);
bool check(ll x){
ll ans = 0;
// for(int i = 1;i <= n;i++)ans += a[i];
// x--;
for(int i = 1;i <= n;i++){
ans += ((x + b[i] - 1) / b[i]) * a[i];
if(ans >= h)return true;
}
if(ans >= h)return true;
return false;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> t;
while(t--){
cin >> h >> n;
// vector<ll>a(n + 1);
// vector<ll>b(n + 1);
// vector<ll>f(N);
for(int i = 1;i <= n;i++)cin >> a[i];
for(int i = 1;i <= n;i++)cin >> b[i];
ll l = 1,r = 1e12;
while(l < r){
ll mid = l + r >> 1;
// cout << mid << " ";
if(check(mid))r = mid;
else l = mid + 1;
}
cout << l << endl;
}
return 0;
}