题目链接:1281
k最大为是sqrt(n)<300
打表出来所有的山峰--
然后枚举
代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int a[50100],n,p[50100],kp;
int ok(int xx)
{
int lp=1;
int li=p[0];
for (int i=1;i<kp;i++)
{
if (p[i]-li>=xx)
{
li=p[i];
lp++;
}
}
if (lp>=xx)
return true;
else
return false;
}
int main()
{
scanf("%d",&n);
for (int i=0;i<n;i++)
scanf("%d",&a[i]);
kp=0;
for (int i=1;i<n-1;i++)
if (a[i-1]<a[i]&&a[i]>a[i+1])
p[kp++]=i;
if (kp==0)
printf("0\n");
else
for (int i=sqrt(n);i>=0;i--)
if (ok(i))
{
printf("%d\n",i);
break;
}
return 0;
}