题目背景
在繁华的都市中,一个诺大的工程刚刚竣工,S 先生下令用若干个柱子建立一座纪念碑。
题目描述
我们需要 n 个柱子来建立纪念碑,第 i 个纪念碑的高度记为 hi,S 先生希望这 n 个柱子的高度由低到高非递减的顺序排列,形式化的说,对于所有的 1≤i<n 使得 hi≤hi+1。
然而,由于施工方的失误,柱子摆放成了非递增的顺序,形式化的说,对于所有的 1≤i<n 满足 hi≥hi+1,因此 S 先生想要修改一些柱子的高度(并非移动柱子)。
S 先生的修改方式如下:
- 将任意一个柱子修改为任意高度,形式化的说,选择索引 1≤i≤n 和正整数 x,然后更改 hi:=x∗ 即可。
你需要求出使纪念碑柱子的高度以非递减的顺序排列的最小操作次数。
∗:hi:=x 表示将 hi 赋值为 x。
输入格式
输入共两行。
第一行输入一个正整数 n,表示柱子的个数。
第二行输入 n 个正整数 hi,第 i 个数表示第 i 个柱子的高度。
输出格式
输出共一行。
第一行输出一个正整数,表示最小的操作次数。
输入输出样例
5
5 4 3 2 1
4
3
2 2 1
1
3
1 1 1
0
提示/说明
样例解释仅为其中一种操作方式,并非唯一解。
【样例解释 1】
对于第一组样例,初始高度为 [5,4,3,2,1]。
可以将高度改为 [1,2,3,4,5],依次操作为 h1:=1,h2:=2,h4:=4,h5:=5,总操作次数为 4。
可以证明不存在小于 4 次的方式使得高度以非递减排列。
【样例解释 2】
对于第二组样例,初始高度为 [2,2,1]。
可以将高度改为 [2,2,2],依次操作为 h3:=2,总操作次数为 1。
可以证明不存在小于 1 次的方式使得高度以非递减排列。
【数据范围】
对于前 30% 的数据保证:n=2。
对于前 60% 的数据保证:1≤n≤5。
对于另外 10% 的数据保证:所有柱子的高度相等,即 ∀1≤i<n,hi=hi+1。
对于 100% 的数据保证:1≤n≤100,1≤hi≤n,hi≥hi+1。