A. 1.划分数列
A . 1. 划 分 数 列 A. 1.划分数列 A.1.划分数列
氵水沝淼㵘解析
先预处理,然后公式推(详见代码)
Code
#include <bits/stdc++.h>
using namespace std;
int n, ans, a, b[100005], c[100005], f[100005];
int main ()
{
int er;
scanf ("%d%d", &n, &er);
memset (f, 0x7ffff, sizeof (f));
b[1] = c[1] = 1;
f[0] = f[1] = 0;
for (int i = 2; i <= n; ++ i)
{
scanf ("%d", &a);
if (a >= er) b[i] = b[i - 1]; else b[i] = i;
if (a <= er) c[i] = c[i - 1]; else c[i] = i;
er = a;
}
for (int i = 1; i <= n; ++ i) f[i] = min (f[b[i] - 1] + 1, f[c[i] - 1] + 1);
printf ("%d", f[n]);
return 0;
}