神题神题,今天来玩几道状压题。
首先考虑若 n≤20 怎么做:
显然记录一下质因子集合即可。
然而 n≤500,但是根据一些基本的数论知识,每个数最多只有一个超过 19 的质因子(下称大质因子)。
于是可以考虑每个数的大质因子预处理出来,然后把大质因子相同的放在一起处理。
具体地说,就是对于每个连续段,考虑把这个大质因子给小 G 或小 W,然后合并答案(注意不选大质因子的会被算两次,容斥掉)。
代码:
1 |
|
神题神题,今天来玩几道状压题。
首先考虑若 n≤20 怎么做:
显然记录一下质因子集合即可。
然而 n≤500,但是根据一些基本的数论知识,每个数最多只有一个超过 19 的质因子(下称大质因子)。
于是可以考虑每个数的大质因子预处理出来,然后把大质因子相同的放在一起处理。
具体地说,就是对于每个连续段,考虑把这个大质因子给小 G 或小 W,然后合并答案(注意不选大质因子的会被算两次,容斥掉)。
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment