[ARC112F] Die Siedler 题解

人类智慧题。

发现 $2$ 操作肯定是不劣的,所以能换则换。考虑将手上的牌转换成一个多进制的数,这样 $2$ 操作就是其进位方法,$1$ 操作就是将当前的数加上牌包对应的数,答案就是其各位数字之和,不难发现其值为:

$$\sum_{i=1}^n c_i\times 2^{i-1}\times (i-1)!$$

再考虑 $2$ 操作中 $j=n$ 的情况,其实就是当数大于 $2^n\times n!-1$ 时将其减去 $2^n\times n!-1$。

记初始的数为 $S$,最终的数为 $T$,第 $i$ 种牌包对应的数为 $a_i$,枚举其使用的数量 $x_i$,则有:

$$T=S+\sum_{i=1}^m x_ia_i-y(2^n\times n!-1)$$

发现是个不定方程。

$$T-S=\sum_{i=1}^m x_ia_i-y(2^n\times n!-1)$$

记 $d=\gcd(2^n\times n!-1,a_1,a_2,\dots,a_m)$,则有 $d|(T-S)$,$T$ 可能是 $[1,2^n\times n!-1]$ 中满足 $T\equiv S\ (\operatorname{mod}\ d)$ 的任何一个数。

考虑按 $d$ 的大小进行分治。

  • 当 $d$ 较大时,直接枚举所有可能的 $T$ 取答案最小值即可,时间复杂度 $\mathcal O(\frac{2^n\times n!}{d})$。

  • 当 $d$ 较小时,建一个图,将每个 $x\in[0,d)$ 连一条到 $(x+2^i\times i!)\ \operatorname{mod}\ d$($0<i<n$)的边,跑一遍同余最短路求出到 $S\ \operatorname{mod}\ d$ 的距离即可。

因为 $2^n\times n!-1$ 的不大于 $\sqrt{2^n\times n!-1}$ 的最大因子为 $1214827$,上述做法可以通过此题。

code

posted @ 2024-02-12 22:15  zifanwang  阅读(12)  评论(0)    收藏  举报  来源