错误的贪了一下,然后D了两下就过了。注意是不上升和不下降。。不是上升和下降。。
#include <cstring>
#include <cstdio>
#include <string>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
#define INF 100000000
int p[];
int dp[];
int o1[];
int o2[];
int main()
{
int a,b,i,n;
scanf("%d%d",&a,&b);
n = b - a + ;
for(i = ;i <= n;i ++)
scanf("%d",&p[i]);
o1[] = o2[] = ;
for(i = ;i <= n;i ++)
{
if(p[i] >= p[i-])
o1[i] = o1[i-];
else
o1[i] = i;
if(p[i] <= p[i-])
o2[i] = o2[i-];
else
o2[i] = i;
}
for(i = ;i <= n;i ++)
{
dp[i] = min(dp[o1[i]-],dp[o2[i]-]) + ;
}
printf("%d\n",dp[n]);
return ;
}