1 solutions

  • 0
    @ 2025-6-12 22:08:50

    本题考虑二分答案,假如一共要攻击 xx 次, 那么被波及到伤害就是 x×bx \times b, 如果这部分的伤害已经足够杀死这个忍者,就不用管这个忍者了。

    如果这部分伤害不足以杀死这个忍者,那么我们必须要使用aa的攻击,然后计算一下至少要几次aa的攻击。

    最后计算出一共需要多少次aa的攻击,如果攻击次数不超过 xx 则可行,否则不可行

    #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