#11678. 珅泽教育CSP-J第一轮模拟考第十六套 第 41 题

珅泽教育CSP-J第一轮模拟考第十六套 第 41 题

三、完善程序(单选题,每小题3分,共计30分)

第2题

自助餐厅有 NN 种菜,每种菜只能点一次。当点了某道菜时,这道菜会立即出现。吃第 ii 种菜耗时 AiA_i、美味度为 BiB_i。需要吃完一道菜才能点下一道。最后一道菜的点单时刻需要严格早于一个给定的整数 TT。点单停止后,还可以继续吃端上来的菜。求可以得到的最大美味度总和。

int solve(int N, int T, int A[], int B[])
{
    int f[3001][3000] = {0};
    int g[3001][3000] = {0};
    for (int i = 0; i < N; ++i) {
        int a = A[i];
        int b = B[i];
        for (int x = ____(1)____ )
        {
            f[i + 1][x] = std::max(f[i][x], ____(2)____ );
        }
        for (int x = a - 1; x >= 0; x--)
        {
            f[i + 1][x] = f[i][x];
        }
    }
    for (int i = 0; i < N; ++i)
    {
        int a = A[____(3)____];
        int b = B[____(4)____];
        for (int x = T - 1; x >= a; x--)
        {
            g[i + 1][x] = std::max(g[i][x], g[i][x-a] + b);
        }
        for (int x = ____(5)____ )
        {
            g[i + 1][x] = g[i][x];
        }
    }
    int max = 0;
    for (int last = 0; last < N; ++last)
    {
        for (int t0 = 0; t0 < T; ++t0)
        {
            for (int t1 = ____(6)____; ____(7)____ < T; ++t1) {
                max = std::max(max, ____(8)____ );
            }
        }
    }
    return max;
}

(1)(2)处应填( )。

{{ select(1) }}

  • a; x < T; x--f[i][x - a] + b
  • T - 1; x >= 0; x--f[i][x + a] + b
  • T - 1; x >= a; x--f[i][x - a] + b
  • T - 1; x >= 0; x--f[i][x - a] + b