题解:P15705 [2018 KAIST RUN Spring] Zigzag

· · 题解

考虑递推。

``` #include <bits/stdc++.h> using namespace std; int a[10000000]; int dp[10000000]; int main() { int n; cin >> n; for (int i = 0; i < n; ++i) { cin >> a[i]; } if (n <= 2) { cout << n << endl; return 0; } for(int i = 0;i <= n;i++) dp[i] = 2; int ans = 2; for (int i = 2; i < n; ++i) { if (!(a[i-2] <= a[i-1] && a[i-1] <= a[i]) && !(a[i-2] >= a[i-1] && a[i-1] >= a[i])) { dp[i] = dp[i-1] + 1; } ans = max(ans, dp[i]); } cout << ans << endl; return 0; } ```