1 条题解
-
0
思路
按峰值合并两侧严格序列,不允许相邻等高和下山再上山。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int main(){int n;cin>>n;vector<long long>a(n);for(auto &x:a)cin>>x;vector<int>l(n,1),r(n,1);for(int i=0;i<n;i++)for(int j=0;j<i;j++)if(a[j]<a[i])l[i]=max(l[i],l[j]+1);for(int i=n-1;i>=0;i--)for(int j=i+1;j<n;j++)if(a[j]<a[i])r[i]=max(r[i],r[j]+1);int best=0;for(int i=0;i<n;i++)best=max(best,l[i]+r[i]-1);cout<<best<<'\n';}
- 1