首先考虑差的性质,也就是 S = ∑ i a i − b i S = \sum_{i} a_i - b_i S=∑iai−bi 我们会发现如果没有进位这个值就是 0 0 0,不然如果有进位那么每一位会多出来 15 15 15 的贡献,可以发现合法的情况是 S ≡ 0 ( m o d 15 ) S \equiv 0 \pmod {15} S≡0(mod15)。
不然就是不合法的。
然后我们需要钦定有多少位是进位的,复杂度是 ( 13 6 ) \binom{13}{6} (613) 可以接受的样子。
又因为 b b b 是 a a a 的置换,本质上我们可以看成 a i − a p i a_i - a_{p_i} ai−api。我们不妨将这种情况连边 i → p i i \to p_i i→pi。可以连接成若干个环。对于每一个点的权值 w i = a i − a p i w_i = a_i - a_{p_i} wi=ai−api。但是对于每一个环我们统一进行处理会更加方便,也就是将整个环 − 1 -1

博客详细解析了CF865E问题,探讨了差的性质,指出合法解满足S ≡ 0 (mod 15)。由于b是a的置换,问题转化为处理ai - api,构造环形结构并优化处理。通过Dp方法求解,当S的最高位为f时,b的最高位也为0,最高位的a可直接设置为S的最大值,其余位置利用前缀和计算。
最低0.47元/天 解锁文章
812

被折叠的 条评论
为什么被折叠?



