1 条题解

  • 0
    @ 2025-8-24 22:33:23

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar yzy1
    Меня мое сердце, в тревожную даль зовёт.

    搬运于2025-08-24 22:33:23,当前版本为作者最后更新于2021-08-02 07:57:44,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    由于题目中规定 bcab\le c\le a,我们可以得出一个性质:最大得分策略 A 输的场数不大于 11。对于这个性质,这里有一个简单的证明:

    若 A 输的场数为 k(k>1)k(k>1)​​,这几局中 A 与 B 的比分分别为 (a1,b1),(a2,b2),,(ak,bk)(a_1,b_1),(a_2,b_2),\cdots,(a_k,b_k)。我们可以将这些同为输的场次合并为一场,即 (a1+a2++ak,b1+b2++bk)(a_1+a_2+\cdots+a_k,b_1+b_2+\cdots+b_k)。而剩下的 k1k-1 场为零比零平局。由于题目保证 bcb\le c,所以合并后的得分一定不劣于原得分。

    同理,我们可以推出第二个性质:最小得分策略 A 赢的场数不大于 11,证明和上一个性质类似,这里不过多讲述。

    我们可以采用贪心思想来解决这个问题。

    • 对于最大得分,枚举「输 00 场」和「输 11 场」,剩下的场尽可能的赢,实在不行就平局。结果取两种方案最大值。
    • 对于最小得分,枚举「赢 00 场」和「赢 11 场」,剩下的场尽可能的输,实在不行就平局。结果取两种方案最小值。
    ll mx = -1, mn = 1e18;
    if (d >= e) up(mx, min(n, d - e) * a + (n - min(n, d - e)) * c);
    up(mx, min(n - 1, d) * a + (e ? b : c) + (n - 1 - min(n - 1, d)) * c);
    if (e >= d) down(mn, min(n, e - d) * b + (n - min(n, e - d)) * c);
    down(mn, min(n - 1, e) * b + (d ? a : c) + (n - 1 - min(n - 1, e)) * c);
    
    • 1

    信息

    ID
    7113
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者