题目链接
解题方法:乘法原理
题目分析
题目大意
一个数列由1~N
组成,已知A1~Ai的最小值为Bi、最大值为Ci,问该数列共有多少种可能
解析
官方解析:
首先,根据题意可得B数组应是单调不升的,C数组是单调不降的。
可以发现A1=B1=C1,所以如果B1≠C1无解。
进一步,我们发现如果$ Bi < B{i-1} , A_i = B_i ;如果 Ci > C{i-1} , A_i = C_i 。但是如果 Bi < B{i-1} 和 Ci > C{i-1} $同时满足,就会产生冲突导致无解。
考虑$ Bi = B{i-1} 和 Ci = C{i-1} 同时满足的情况,此时应有 A_i \in (B_i,C_i) 且 A_i 没有在之前使用过。因为 (B_i,C_i) 是不断变大的,我们只需维护一下这个区间内有多少值已经被使用过了,用乘法原理统计答案即可。注意到如果某时刻 A_i $没有值可以使用,也会导致无解。
时间复杂度O(Tn)。
代码
1 |
|