1 solutions
-
0
本题考虑二分答案,假如一共要攻击 次, 那么被波及到伤害就是 , 如果这部分的伤害已经足够杀死这个忍者,就不用管这个忍者了。
如果这部分伤害不足以杀死这个忍者,那么我们必须要使用的攻击,然后计算一下至少要几次的攻击。
最后计算出一共需要多少次的攻击,如果攻击次数不超过 则可行,否则不可行
#include <bits/stdc++.h> using namespace std; long long n, a, b, c[100111]; bool check(long long x) { long long sum = 0; for (long long i = 1; i <= n; i++) if (c[i] > x * b) sum += (c[i] - x * b - 1) / a + 1; return sum <= x; } int main() { cin >> n >> a >> b, a -= b; for (long long i = 1; i <= n; i++) scanf("%lld", &c[i]); long long l = 1, r = 1000000000; while (l + 1 < r) { int mid = l + r >> 1; if (check(mid)) r = mid; else l = mid; } if (check(l)) cout << l << '\n'; else cout << r << '\n'; return 0; }
Information
- ID
- 674
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 9
- Tags
- (None)
- # Submissions
- 61
- Accepted
- 3
- Uploaded By