看到 GCD / LCM,果断莫反(雾
但是发现莫反并没有办法处理强制选 X 的情况……
换个方向。
值域 108,所以 L 最多有 8 个质因子。
所以考虑状压 DP。
根据数论套路,令 N←⌊NG⌋,L←LG。当然,若 G∤L 直接无解。
那么问题变为在 1…N 内选若干个互质的正整数,强制选择 X,使得它们的 LCM 为 L 的方案数。
也即这些数的每个质因子的指数的最小值为 0,最大值为 L 对应的指数。
考虑如此状压一个数:前一半表示这个数每个质因子指数是否为 0,后一半表示这个数每个质因子指数是否等于 L 对应的指数。
将 1…N 内 L 的约数拿出来,按照状态分组,发现合法的状态并不多。
设 f0/1,i,j 表示考虑了第 i 种状态之前 / 之后所有状态,总状态为 j 的方案数。
选择一种状态的贡献是这种状态对应的整数的子集个数。
强制选择一个 X 即合并 f0,i 和 f1,i,其中 i 为 X 的状态,这个可以 FWT 合并。
注意此时第 i 种状态的贡献要考虑强制选择了至少一个数。
又是一道在洛谷不开 O2 跑不过的题(
代码:
1 |
|