题目链接
解题方法:乘法原理
题目分析
题目大意
一个数列由1~N
组成,已知A1~Ai的最小值为Bi、最大值为Ci,问该数列共有多少种可能
解析
官方解析:
首先,根据题意可得B数组应是单调不升的,C数组是单调不降的。
可以发现$ A_1 = B_1 = C_1 $,所以如果$ B_1 \neq C_1 $无解。
进一步,我们发现如果$ 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 |
|