Codeforces Round #531 (Div. 3)E. Monotonic Renumeration

题目意思:

给你一个数组,有n个正整数组成。如果满足一下两个规则,那么b数组合法:

规则1:如果ai=aj,那么bi=bj

规则2:for every index i∈[1,n−1]i∈[1,n−1] either bi=bi+1bi=bi+1 or bi+1=bi+1bi+1=bi+1.

现在要求有多少种b数组对应a数组是合法的。

 

解题思路:

 

1.首先,通过分析,得到b数组的性质:b数组是一个单调递增的数组(其中某一段可以相同)

2.假设a数组种有两个数字相同,分别为ai和aj,那么就得到bi=bi+1=...bj(这一段都相同)

3。把所有这些相同的段想象成长度、起始位置和结束为止各不相同的线段覆盖在1~n的段上,然后,让相交的线段(包括端点相碰)的段融合为一个段,问你经过融合以后,有多少个独立的段?

4.答案=2^(独立的段的数量-1),这是因为,两个段之间要么相同,要么相差为1,共有段-1个间隙,更具乘法原理,我们有2^(段-1)

你可能感兴趣的:(数学)