P12697 [KOI 2022 Round 2] 更换卡片
题目背景
试题来源:。中文翻译做了少量本土化修改。
按照[署名—非商业性使用—相同方式共享 4.0 协议国际版](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans)进行授权。
题目描述
桌面上放置了 $N$ 张卡片。为方便描述,我们将最左边的卡片称为第 1 张卡片,接下来的称为第 2 张卡片,以此类推,最右边的卡片为第 $N$ 张卡片。
每张卡片上都写有一个整数。记第 $i$ 张卡片上写的数为 $x_i$。
你可以选择更改这 $N$ 张卡片中部分卡片上写的数字,使得从左到右卡片上的数字呈现以下三种形式之一:
- 单调递增(每张卡片上的数比左边那张卡片上的数大相同的量);
- 单调递减(每张卡片上的数比左边那张卡片上的数小相同的量);
- 所有卡片上的数都相同。
你只能将卡片上的数改为整数,并且需要使改动的卡片数量尽可能少。
例如,考虑下面的情况:卡片上的数依次为 1、2、2、4。
你可以将第 3 张卡片上的数字改为 3,这样卡片上的数就依次为 1、2、3、4,满足每张卡片上的数字比左边一张大 1。此时只更改了 1 张卡片。
或者,你可以将第 1 张和第 4 张卡片上的数字都改为 2,使所有卡片上的数字都变为 2,此时共更改了 2 张卡片。
给定从最左边到最右边所有卡片上原本写的数,请计算为了满足上述任意一种形式,最少需要更改多少张卡片。
输入格式
第一行包含一个整数 $N$,表示卡片的数量。
第二行包含 $N$ 个整数 $x_1, x_2, \ldots, x_N$,表示从左到右每张卡片上写的数,数之间用空格分隔。
输出格式
输出一个整数,表示为了满足条件需要更改的卡片数量的最小值。
说明/提示
**约束条件**
- $2 \leq N \leq 500$
- 对所有 $1 \leq i \leq N$,有 $-1\,000\,000 \leq x_i \leq 1\,000\,000$
**子任务**
1. (3 分)$N \leq 3$
2. (10 分)最少只需更改不超过 2 张卡片
3. (20 分)保证存在一种最优解使得相邻卡片上数的差值不超过 100
4. (67 分)无额外限制条件