ABC 322
Table of Contents
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