#include <bits/stdc++.h> using namespace std; int dp[2][2][50100]; int a[50100]; void solve() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } // 0 decline // 1 incline dp[0][0][1] = 0; dp[1][0][1] = 0; dp[0][1][1] = 1; dp[1][1][1] = 1; for (int i = 2; i <= n; i++) { dp[0][0][i] = dp[1][0][i] = dp[0][1][i] = dp[1][1][i] = 1e9; // make decline dp[0][0][i] = min(dp[0][0][i], dp[1][1][i-1]); if (a[i-1] > a[i]) dp[0][0][i] = min(dp[0][0][i], dp[1][0][i-1]); dp[0][1][i] = min(dp[0][1][i], min(dp[1][0][i-1], dp[1][1][i-1])+1); // make incline dp[1][0][i] = min(dp[1][0][i], dp[0][1][i-1]); if (a[i-1] < a[i]) dp[1][0][i] = min(dp[1][0][i], dp[0][0][i-1]); dp[1][1][i] = min(dp[1][1][i], min(dp[0][0][i-1], dp[0][1][i-1])+1); } cout << min({dp[0][0][n], dp[0][1][n], dp[1][0][n], dp[1][1][n]}) << "\n"; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int t; t = 1; #ifdef Local // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); // cin >> t; #endif // cin >> t; while(t--){ solve(); } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include <bits/stdc++.h> using namespace std; int dp[2][2][50100]; int a[50100]; void solve() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } // 0 decline // 1 incline dp[0][0][1] = 0; dp[1][0][1] = 0; dp[0][1][1] = 1; dp[1][1][1] = 1; for (int i = 2; i <= n; i++) { dp[0][0][i] = dp[1][0][i] = dp[0][1][i] = dp[1][1][i] = 1e9; // make decline dp[0][0][i] = min(dp[0][0][i], dp[1][1][i-1]); if (a[i-1] > a[i]) dp[0][0][i] = min(dp[0][0][i], dp[1][0][i-1]); dp[0][1][i] = min(dp[0][1][i], min(dp[1][0][i-1], dp[1][1][i-1])+1); // make incline dp[1][0][i] = min(dp[1][0][i], dp[0][1][i-1]); if (a[i-1] < a[i]) dp[1][0][i] = min(dp[1][0][i], dp[0][0][i-1]); dp[1][1][i] = min(dp[1][1][i], min(dp[0][0][i-1], dp[0][1][i-1])+1); } cout << min({dp[0][0][n], dp[0][1][n], dp[1][0][n], dp[1][1][n]}) << "\n"; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int t; t = 1; #ifdef Local // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); // cin >> t; #endif // cin >> t; while(t--){ solve(); } return 0; } |