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$。
删掉叶片不好处理,可以考虑保留叶片。那么每个已经被删的叶片所在的组显然不合法。
每个点对应着两个组,这是该二分图的边,这两个组无法同时被保留。
然后问题就是二分图的最大独立集,有最大独立集=全集-最大匹配集。