P r o b l e m \mathrm{Problem} Problem
给定一个长度为n的数列{a1,a2…an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。
问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。
S o l u t i o n \mathrm{Solution} Solution
由于是区间修改,我们考虑将区间修改转化为单点修改。
那么我们可以将问题转化为:
- 我们另 b i = a i − a i − 1 , i ∈ [ 1 , n + 1 ] b_i=a_i-a_{i-1},i∈[1,n+1] bi=ai−ai−1,i∈[1,n+1],得到一个长度 n + 1 n+1 n+1的差分序列。
每一次操作可以选择 l l l和 r r r满足 l < r l<r l<r的前提下,对 b l b_l bl加上 x x x,