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}$,那么也有点是无用的。
如果合并了所有无用的点,那么答案对于长度一定可以表示为一次函数的形式。
所以用小根堆不断合并无用的点,维护一次函数。
然而似乎很难打,打不出来