P8292 [省选联考 2022] 卡牌 题解
P8292 [省选联考 2022] 卡牌 题解
首先 \(s_i\le 30\) 是一个很简单的容斥,设 \(f_S\) 表示 \(S\) 中的质数的倍数都不选择的方案数,这些倍数有 \(x\) 个,那么 \(f_S=2^{n-x}\),最终答案为 \(g_S=\sum_{T\subseteq S}(-1)^{|T|}f_T\)。
发现 \(30\) 刚好是 \(2000\) 的根号级别,这给了我们根号分治的提示,于是我们尝试将 \(\ge 47\) 的大质数与 \(\le 43\) 的小质数分开处理。只有小质数很明显是可以用上述方法状压处理的,由于不存在一个数有两个大质数,只有大质数的情况下,设大质数 \(p\) 的倍数的个数为 \(C_p\),答案就是\(2^n\prod_p\frac{2^{C_p}-1}{2^{C_p}}\)。
当结合两者时,容易发现变化的是 \(f_S\ne 2^{n-x}\),设大质数 \(p\) 去除了 \(S\) 中集合的倍数后的倍数为 \(C_p\),那么 \(f_S=2^{n-x}\prod_p\frac{2^{C_p}-1}{2^{C_p}}\)。其组合意义为要求 S 中的小质数不选但大质数仍要满足条件的方案数。
这是一种普遍的容斥之上再加条件的思路,即一些限制被容斥掉,一些限制始终满足。
对于每次询问,大质数是发生变化的,直接计算就可以了,复杂度为 \(O(2^{13}\sum c)\) 。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号