题解 P1893 【山峰暸望】
这题真的特别简单(水)啊,纯模拟就能过,代码也非常短。不知道是数据太水还是正解就是纯模拟。按照提示里所说的:“如果你知道一座山的最高的部分(也就是山峰),你会发现,找到这座山的宽度是很容易的哦。”我们只需要枚举每一个高度,然后找出以当前高度为山峰的山的宽度,最后再与答案取大小就行了。
看代码:
#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;//输出
}