题目描述
你现在处于一个棋盘当中,长度为n,高度无限,棋盘上的每一列 有蓝色格子 和 白色格子组成,例如下图所示,我们现在要求将所有的格子都染成蓝色,每次染色你有两种方案:
-
选择指定区间的列,将这段区间内的一行染成蓝色,注意,已经是蓝色的格子,不能重复再染;
-
选择某一列,染成蓝色;
问你最少需要染色多少次?
输入格式
输入共两行;
第一行一个整数n,表示总共有多少列;1≤n≤104;
第2行n个数字,表示棋盘当中每一列下方的白色的格子的数目;
第i个数字ai表示第i列的白色格子的数目,0≤ai≤104
输出格式
一行一个数字,表示最少染色次数;
样例
5
2 1 2 2 1
3
数据范围与限制
- 对于30%,n≤20,ai≤10000
- 对于另外20%的数据,n≤10000,ai<ai+1;
- 对于另外20%的数据,n≤10000,∀i∈[1,n],ai=ai+1;
- 对于100%的数据,n≤104,0≤ai≤10000
提示
样例1解释
如上图所示,总共有5列, 第一列有两个白色格子,第2列有1个,第3列有2个,第4列2个,第5列1个;
那么总共需要染色的次数 最少为3次;
-
第1次,将第1列到第5列的第一行全部染成蓝色,此时数组的状态为[1,0,1,1,0];
-
第2次将第1列染成蓝色,此时数组的状态为[0,0,1,1,0];
-
第3次将第3列到第4列总共染成蓝色;
此时数组的状态为[0,0,0,0,0],每一列都没有白色格子,所有的都变成了蓝色,染色完毕;