A. 数学

利用本题的特殊性质,可以得到如果 $n$ 为奇数,那么答案为 $(ab)^{\frac{n+1}{2}}$ ,对这个玩意平方一下即可发现是对的。

对于 $n$ 为偶数,可以把 $2$ 全都提取出来,然后对剩余的部分取得一个解。

然后不断缩小 $2$ 的次数以迭代,当缩小为 $2^0$ 的时候可以直接得到解。

很妙的一步是当 $y_0^{2^w} != -1$,因为 $y_0^{2^{w+1}} = 1$,有 $(y_0^{2^w}-1)*(y_0^{2^w}+1)=1$。

于是可以通过上面两个值,把模数进行分解的效果,以继续递归。

 

B. 灌水

考虑每次给最大的木板定位,那么每次的贡献就是新增的区间大小,所以一个显然的想法是维护区间的左右端点。

然后发现这个东西是没有必要的,我们最终只关注某个值是否存在。

对于每一种方案,都可以随意地构造出一种左右端点来,权值是与左右端点无关的,所以只要维护区间长度就行了。

写个 dp ,发现权值只有0/1,转移就对应着位移和或运算,显然用 bitset 来优化。

随便整个类似前缀和的东西,复杂度就做到 $O(\frac{n^3l}{w})$ 了。

发现权值比个数小得多,所以对每个权值考虑一次即可做到 $O(\frac{n^2l^2}{w})$。

 

C. C

奇怪的数据范围,加上特别的只有两个质因子的限定,很明显是在提示网络流。

然而没想到可以这样分配二分图的两个点集。

两个组点集别表示在第一个质数中的组和第二个质数中的组,组的大小分别是 $p_1,p_2$。

删掉叶片不好处理,可以考虑保留叶片。那么每个已经被删的叶片所在的组显然不合法。

每个点对应着两个组,这是该二分图的边,这两个组无法同时被保留。

然后问题就是二分图的最大独立集,有最大独立集=全集-最大匹配集。