CF1849D Array Painting
题目描述
给定一个长度为 $n$ 的整数数组,每个整数都是 $0$、$1$ 或 $2$。初始时,数组中的每个元素都是蓝色的。
你的目标是将数组中的每个元素都涂成红色。为此,你可以进行两种操作:
- 花费一枚硬币,选择一个蓝色元素并将其涂成红色;
- 选择一个已经是红色且不等于 $0$ 的元素,以及与其相邻的一个蓝色元素,将该红色元素的值减 $1$,并将相邻的蓝色元素涂成红色。
你需要花费的最少硬币数是多少,才能将所有元素都涂成红色?
输入格式
第一行包含一个整数 $n$($1 \le n \le 2 \times 10^5$)。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 2$)。
输出格式
输出一个整数,表示将所有元素都涂成红色所需花费的最少硬币数。
说明/提示
在第一个样例中,你只需花费一枚硬币即可将所有元素都涂成红色,操作如下:
1. 花费一枚硬币将第 $2$ 个元素涂成红色;
2. 将第 $2$ 个元素的值减 $1$,并将第 $1$ 个元素涂成红色;
3. 再将第 $2$ 个元素的值减 $1$,并将第 $3$ 个元素涂成红色。
在第二个样例中,你只需花费两枚硬币即可将所有元素都涂成红色,操作如下:
1. 花费一枚硬币将第 $4$ 个元素涂成红色;
2. 将第 $4$ 个元素的值减 $1$,并将第 $3$ 个元素涂成红色;
3. 花费一枚硬币将第 $1$ 个元素涂成红色;
4. 将第 $3$ 个元素的值减 $1$,并将第 $2$ 个元素涂成红色。
由 ChatGPT 4.1 翻译