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;	
}
posted @ 2020-12-26 10:04  unknown_future  阅读(47)  评论(0编辑  收藏  举报