1 条题解

  • 0
    @ 2026-5-4 15:14:31

    本题的目标是最大化 x+y+zx + y + z,满足 ax+by+cz=na x + b y + c z = n。数据范围较小,因此可以简单地枚举两个变量(例如 xxyy),然后通过等式求出第三个变量 zz(如果存在整数解)。在所有可行解中取最大值即可。

    另一种方法:使用动态规划,每个状态表示剩余彩带长度,每次选择下一段长度为 aabbcc

    #include <iostream>
    using namespace std;
    main()
    {
        int k[4005], n, a, i, j;
        fill(k + 1, k + 4005, -1e9);
        cin >> n;
        for (; cin >> a;)
            for (i = a; i <= n; i++)
                k[i] = max(k[i], k[i - a] + 1);
        cout << k[n];
    }
    
    • 1

    信息

    ID
    6805
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    4
    已通过
    1
    上传者