1 条题解
-
0
dp 题,没有测试数据😭,应该是对的吧😋
#include <bits/stdc++.h> using namespace std; constexpr int inf = 0x3f3f3f3f; void solve() { int n; cin >> n; vector a(n, 0); for (auto &i : a) { cin >> i; } vector dp(n, vector(3, inf)); dp[0][0] = 1; if (a[0] == 3) { dp[0][1] = 0; dp[0][2] = 0; } else if (a[0] == 2) { dp[0][2] = 0; } else if (a[0] == 1) { dp[0][1] = 0; } auto _0 = [&](int i) { dp[i][0] = min(min(dp[i - 1][0], dp[i - 1][1]), dp[i - 1][2]) + 1; }; auto _1 = [&](int i) { dp[i][1] = min(min(dp[i - 1][0], dp[i - 1][2]), dp[i - 1][1] + 1); }; auto _2 = [&](int i) { dp[i][2] = min(min(dp[i - 1][0], dp[i - 1][1]), dp[i - 1][2] + 1); }; for (int i = 1; i < n; ++i) { _0(i); if (a[i] == 3) { _1(i); _2(i); } else if (a[i] == 2) { _2(i); } else if (a[i] == 1) { _1(i); } } cout << min(min(dp[n - 1][0], dp[n - 1][1]), dp[n - 1][2]) << '\n'; } int main() { int t; cin >> t; while (t--) solve(); return 0; }
- 1
信息
- ID
- 433
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 0
- 上传者