P1893 山峰暸望[普及-]
https://www.luogu.com.cn/problem/P1893
涉及知识点:枚举,模拟暴力
思路:
一:枚举每一座山的高度。
二:从这座山开始向左找下降序列
从这座山开始向右找下降序列
三:取长度最大值 r-l+1 (右边界-左边界+1)
注意:最长不下降子序列和最长不上升子序列中必须是 a1<=a2<=a3 a1>=a2>=a3
但在最长上升子序列和最长下降子序列中相邻两个数不能相等 a1<a2<a3 a1>a2>a3
#include <iostream> using namespace std; int n,ans,l,r; long long a[10001]; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i];//输入 for(int i=1;i<=n;i++) { l=i;r=i;//以当前高度为山峰的山的左边和右边 while(a[l-1]<=a[l]&&l>1)l--;//找最左 while(a[r+1]<=a[r]&&r<n)r++;//找最右 ans=max(ans,r-l+1);//更新答案 } cout<<ans<<endl;//输出 }

浙公网安备 33010602011771号