1 条题解

  • 0
    @ 2025-8-24 21:16:06

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar shinzanmono
    QQ: 2162579766||欢歌载舞,交换比特,共同庆祝

    搬运于2025-08-24 21:16:05,当前版本为作者最后更新于2024-03-16 20:56:50,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Source & Knowledge

    2024 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。

    题目大意

    • 满贯为 55 番,获得 1200012000
    • 跳满为 6677 番,获得 1800018000 点。
    • 倍满为 881010 番,获得 2400024000 点。
    • 三倍满为 11111212 番,获得 3600036000 点。
    • 番数为 13x13x+1213x\sim 13x+12xx 是正整数)时,称为 xx 倍役满,获得 48000x48000x 点。

    你需要找出一个最小的番数 pp 使得 pp 番获得的点数 kk 满足 x+kykx+k\geq y-k

    题目分析

    x+kykx+k\geq y-k 可得 yx2ky-x\leq 2k,即 kyx2k\geq \left\lceil\dfrac{y-x}{2}\right\rceil。所以我们只需要求可以获得 yx2\left\lceil\dfrac{y-x}{2}\right\rceil 点以上的最小番数即可。

    如果这个数字 36000\leq 36000,说明番数只能为 1121\sim 12,直接使用分支语句判断即可。

    否则,说明至少需要一个 tt 倍役满,也就是要找到最小的 tt 使得 48000tyx248000t\geq \left\lceil\dfrac{y-x}{2}\right\rceil,所以 $t\geq\left\lceil\dfrac{\left\lceil\dfrac{y-x}{2}\right\rceil}{48000}\right\rceil$,我们只需要求出右手边的式子即可。

        if(x+12000>=y-12000)std::cout<<"5\n";
        else if(x+18000>=y-18000)std::cout<<"6\n";
        else if(x+24000>=y-24000)std::cout<<"8\n";
        else if(x+36000>=y-36000)std::cout<<"11\n";
        else std::cout<<(((y-x-1)/2)/48000+1)*13<<'\n';
    

    视频讲解

    完整代码见视频题解

    • 1

    信息

    ID
    9829
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者