题解 [ARC093F] Dark Horse

若 $p_1=1$,发现会与 $1$ 玩的是 $\forall k\in[1,n],\min\limits_{i=2^{k-1}+1}^{2^k}p_i$,只要保证这 $k$ 个区间最小值均不在 $A$ 中即可。

钦定 $p_1=1$,答案乘 $2^n$ 即可。

考虑容斥,$f(S)$ 表示 $S$ 中的区间最小值在 $A$ 中的方案数,答案为 $\sum\limits(-1)^{|S|}f(S)$。

如何求 $f(S)$ 可以考虑将 $A$ 从大到小排序后 DP,转移时要保证新开的集合最小值在 $A$ 中。具体地,用 $g(i,S)$ 表示考虑 $A$ 中前 $i$ 个元素,所在集合为 $S$ 的方案数。转移方程为 $g(i,S|2^k)=g(i-1,S|2^k)+g(i-1,S)\times \dbinom{2^n-A_i-S}{2^k-1}\times 2^k!$,后面的式子表示从剩下的比 $A_i$ 大的且没被选的数选出 $2^k-1$ 个数搭配 $A_i$,集合里顺序不限。有趣的是集合大小和下标是一样的,所以组合数的上面一项是带 $S$ 的。$f(S)=\sum g(i,S)\times (2^n-1-S)!$,因为剩下的集合任意排列。

时间复杂度 $O(nm2^n)$。

posted @ 2023-07-13 14:42  Terac  阅读(15)  评论(0)    收藏  举报  来源