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;//输出
}

 

posted @ 2022-07-04 18:16  -イレイナ  阅读(44)  评论(0)    收藏  举报