1 条题解
-
4
Square
推荐题目:NOI2015T3,2022省选联考T4。
题意是:在 选择子集 ,,记 表示集合的元素的乘积。不存在 ,。计算这样的集合 的个数,对大质数取模。
I 转化题意
不难发现原命题相当于令 ,将其质因数分解成 , 是质数,有 。
于是,你想到状压,记下质因数的指数是 还是 。
设 表示已经考虑到 ,共选了 ,此时的 的质因数分解的情况为 。
转移简单(真的简单),预处理每个数的质因数分解的 ,去掉能被 整除的,做一遍 DP。
$R_{i, j, S} = R_{i-1, j, S} + R_{i-1, j-1, S \oplus mask_i}$。
最后输出答案就行了。
II 优化DP
不难发现 以内的质数比较多,状态开不下,上面的 DP,只有 50pts。
所以考虑优化,你发现一些质数比如说 ,它的指数最多为 ,因为 。所以类似地,,他们的指数最多只有 ,它们最多选 个。
故修改下原来的定义: 仍旧去掉含平方因子的数字,只有前 个质数的指数的状态。
综此,我们设计出如下 DP。
将每个整数找出最大的质因子,如果比 ,大叫做大数,小的叫做小数。
对相同最大质因子的大数分别做分组背包,所有小数做 01 背包。滚动数组搞上来。
复杂度
- 1
信息
- ID
- 2785
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 36
- 已通过
- 7
- 上传者