发现 N≤15N\le15N≤15,考虑状压。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
状压思路
定义一个 NNN 位的二进制数为该选择方案的表示,如 (11)10=(1011)2(11)_{10} = (1011)_{2}(11)10 =(1011)2 ,即表示该方案拿了 1 号、2 号和 4 号。
实现
不难思考,将所有已有条件压入 vector 中或两个数组中,表示每种方案的可取性,然后一次暴力枚举每一种条件,即枚举 0→2N−10\to2^{N}-10→2N−1,与每一个条件对照,累加 ans,得出答案。
时间复杂度 O(qN×2N)O(qN\times2^N)O(qN×2N)。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AC 代码