滚动 f 数组(WA):
_for (i, 0, 1) _for (j, 0, N - 1) f[i][j] = inf;
f[o = 0][1] = 0;
while (q -- ) {
cin >> op >> x, x -- , ch = op == 'R', cur_pos[last_ch] = last_x, o ^= 1;
_for (i, 0, n - 1) if (f[o ^ 1][i] < inf) {
cur_pos[last_ch ^ 1] = i, solve(cur_pos[ch], x, cur_pos[ch ^ 1]);
for (P t : res) f[o][t.S] = min(f[o][t.S], f[o ^ 1][i] + t.F);
}
last_ch = ch, last_x = x;
}
_for (i, 0, n - 1) ans = min(ans, f[o][i]);
不滚动(AC):
_for (i, 0, q) _for (j, 0, N - 1) f[i][j] = inf;
f[0][1] = 0;
_for (j, 0, q - 1) {
cin >> op >> x, x -- , ch = op == 'R', cur_pos[last_ch] = last_x;
_for (i, 0, n - 1) if (f[j][i] < inf) {
cur_pos[last_ch ^ 1] = i, solve(cur_pos[ch], x, cur_pos[ch ^ 1]);
for (P t : res) f[j + 1][t.S] = min(f[j + 1][t.S], f[j][i] + t.F);
}
last_ch = ch, last_x = x;
}
_for (i, 0, n - 1) ans = min(ans, f[q][i]);