1 条题解

  • 0
    @ 2025-8-24 23:14:01

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar LittleAcbg
    Go study in real life instead. || Last online: 2025/8/23 15:13

    搬运于2025-08-24 23:14:01,当前版本为作者最后更新于2025-04-20 16:06:02,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    由于是从左往右倒的,那么靠右的杯子满了对小奶龙更加友好(他更有可能喝到果汁)。所以我们进行贪心,每次贪心地倒入编号更大的杯子。如果编号更大的杯子已满,就倒入另一杯。如果两杯都已满,答案就可以加 11

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 3e4+9;
    int t,n,m,v[N],a;
    int main()
    {
        cin >> t;
        while (t--) // t 组数据
        {
            cin >> n >> m;
            for (int i = 1; i <= m; ++i) cin >> v[i]; // 容量
            int ans = 0;
            while (n--) // 倒 n 次,a[j] 不用存储
            {
                cin >> a;
                if (v[a + 1]) // 编号较大的杯子还能倒,就倒
                    --v[a + 1]; // 倒入,剩余容量 -1
                else if (v[a]) // 否则尝试编号较小的杯子
                    --v[a];
                else // 两杯均满,喝掉
                    ++ans; // 答案 +1
            }
            cout << ans << endl;
        }
        return 0;
    }
    
    • 1

    信息

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