1. 题意
题目大意就是一块曲奇饼干需要 \(n\) 种食材,第 \(i\) 种需要 \(a_i\) 克,而你手中有这种食材 \(b_i\) 克,还有另外 \(k\) 克食材每一克可以代替任何一种食材一克,求最多能做多少块曲奇。
2.思路
由于食材数量是固定的,那么肯定存在一个 \(mid\),使得食材能够烘焙出 \(1 \sim mid\) 块曲奇,而不能烘焙出 \(mid\) 以上块曲奇。我们只需要二分寻找出 \(mid\) 即可。
3.代码实现
#include <bits/stdc++.h>
using namespace std;
int a[1001], b[1001];
long long n, k, l, r, ans;
bool check(long long mid)
{
long long sum = 0;
for(long long i = 1; i <= n; i ++)
{
if (b[i] < a[i] * mid) sum += a[i] * mid - b[i];
if (sum > k) return false;
}
if (sum <= k) return true;
return false;
}
int main()
{
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; i ++) scanf("%d", &a[i]);
for (int i = 1; i <= n; i ++) scanf("%d", &b[i]);
l = 0, r = 2e9;
while (l <= r)
{
long long mid = l + r >> 1;
if (check(mid)) {l = mid + 1; ans = mid;}
else r = mid - 1;
}
printf("%lld", ans);
}
标签:Magic,题解,mid,long,食材,曲奇,Powder,ans
From: https://www.cnblogs.com/tongyuxin/p/17120291.html