A. x

不妨考虑每一个质因子。

那么拥有这个质因子的所有数都应当被分入一个集合中。

而不拥有这个质因子的数可以有两种选择。

 

将每个质因子的情况综合起来,用并查集维护一下联通块数量,

答案就是$2^{cnt}-2$

 

 

 

B. y

暴力dp的设计是简单的,显然可以使用bitset优化一下这个dp,然后改变一下方式卡卡常似乎能A?

很显然01串的状态数随着d的增长是指数级的,转移越来越困难。

不妨使用meet in the middle思想,

将暴力的dp20位,改为只dp10位。

枚举链接点将两个状态合并。

 

 

 

C. z

正解的思路大概是将询问离线排序。

考虑到一些要求是无用的:

如果$x_i$被夹在$x_{i-1}$和$x_{i+1}$中间,那么点i是无用的。

如果在当前询问下,线段在覆盖$x_i$的同时已经可以直接覆盖$x_{i+1}$,那么也有点是无用的。

如果合并了所有无用的点,那么答案对于长度一定可以表示为一次函数的形式。

所以用小根堆不断合并无用的点,维护一次函数。

然而似乎很难打,打不出来