CF1849D.Array Painting
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an array of n integers, where each integer is either 0 , 1 , or 2 . Initially, each element of the array is blue.
Your goal is to paint each element of the array red. In order to do so, you can perform operations of two types:
- pay one coin to choose a blue element and paint it red;
- choose a red element which is not equal to 0 and a blue element adjacent to it, decrease the chosen red element by 1 , and paint the chosen blue element red.
What is the minimum number of coins you have to spend to achieve your goal?
输入格式
The first line contains one integer n ( 1≤n≤2⋅105 ).
The second line contains n integers a1,a2,…,an ( 0≤ai≤2 ).
输出格式
Print one integer — the minimum number of coins you have to spend in order to paint all elements red.
输入输出样例
输入#1
3 0 2 0
输出#1
1
输入#2
4 0 0 1 1
输出#2
2
输入#3
7 0 1 0 0 1 0 2
输出#3
4
说明/提示
In the first example, you can paint all elements red with having to spend only one coin as follows:
- paint the 2 -nd element red by spending one coin;
- decrease the 2 -nd element by 1 and paint the 1 -st element red;
- decrease the 2 -nd element by 1 and paint the 3 -rd element red.
In the second example, you can paint all elements red spending only two coins as follows:
- paint the 4 -th element red by spending one coin;
- decrease the 4 -th element by 1 and paint the 3 -rd element red;
- paint the 1 -st element red by spending one coin;
- decrease the 3 -rd element by 1 and paint the 2 -nd element red.