#1824. 珅泽教育CSP-J第一轮模拟考第九套 第 38 题

珅泽教育CSP-J第一轮模拟考第九套 第 38 题

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

第1题

炼制一块合金,该合金需要 aa 克黄金与 bb 克白银。商店里有 nn 块材料,第 ii 块材料含有 xix_i 克黄金与 yiy_i 克白银,且含有 wiw_i 克杂质。

请问应该使用哪些材料,将它们炼制在一起,才能使得合金中黄金与白银含量不少于给定的要求,且杂质总和最小。所有材料均不可切割。输入数据保证所要求的合金一定可以炼成。

int n, a, b;
int x[maxn], y[maxn], w[maxn];
int mem[maxn][maxm][maxm];
bool cache[maxn][maxm][maxm];
const int INF = 1000000000;
int dfs(int k, int i, int j) {
    if (____(1)____) return 0;
    if (____(2)____) return INF;
    if (cache[k][i][j]) return mem[k][i][j];

    int ni = ____(3)____;
    int nj = ____(4)____;
    int giveup = ____(5)____;
    int pickup = ____(6)____;

    cache[k][i][j] = true;
    return mem[k][i][j] = std::min(giveup,pickup);
}
int main() {
    std::cin >> n >> a >> b;
    for (int i = 0; i < n; ++i)
        std::cin >> x[i] >> y[i] >> w[i];

    std::cout << ____(7)____ << "\n";
    return 0;
}

(3)(4) 处应填( )。

{{ select(1) }}

  • std::min(i, a)std::min(j, b)
  • std::min(i, a) - x[k]std::min(j, b) - y[k]
  • std::min(i - x[k], a)std::min(j - y[k], b)
  • std::min(i + x[k], a)std::min(j + y[k], b)