ABC 322

https://atcoder.jp/contests/abc322

A. First ABC 2

https://atcoder.jp/contests/abc322/tasks/abc322_a

B. Prefix and Suffix

https://atcoder.jp/contests/abc322/tasks/abc322_b

C. Festival

https://atcoder.jp/contests/abc322/tasks/abc322_c

D. Polyomino

https://atcoder.jp/contests/abc322/tasks/abc322_d

E. Product Development

https://atcoder.jp/contests/abc322/tasks/abc322_e

解説 AC.

void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k, p;
    cin >> n >> k >> p;
    vll c(n + 1);
    vvll A(n + 1, vll(k));
    rep(i, n) {
        cin >> c[i + 1];
        rep(j, k) {
            cin >> A[i + 1][j];
        }
    }

    vector<map<vll, ll>> dp(n + 1);
    dp[0][vll(k, 0)] = 0;
    rep2(i, 1, n + 1) {
        dp[i] = dp[i - 1];
        for (auto [v, val] : dp[i - 1]) {
            vll t = v;
            rep(j, k) {
                t[j] += A[i][j];
                if (t[j] > p)
                    t[j] = p;
            }
            if (dp[i].count(t)) {
                chmin(dp[i][t], val + c[i]);
            } else {
                dp[i][t] = val + c[i];
            }
        }
    }

    vll v(k, p);
    if (dp[n].count(v)) {
        cout << dp[n][v] << endl;
    } else {
        cout << -1 << endl;
    }
}

F. Vacation Query

https://atcoder.jp/contests/abc322/tasks/abc322_f

G. Two Kinds of Base

https://atcoder.jp/contests/abc322/tasks/abc322_g