题意不多赘述。
思路
看到 1 0 1000 10^{1000} 101000 这个数据范围,不是结论题,就是高精;不是高精,就是数位DP。
又看到求方案数,又要砝码数量最小,不出意外,就是数位DP了。
开始考虑DP。注意到砝码数量是 4 4 4 的幂,容易想到将原数转化为 4 4 4 进制数。
看到样例,容易发现,方案由一堆砝码相加和一堆砝码相减两种情况组成,这就意味着DP过程需要分类讨论。同时发现相减的本质是借位,因为对于一个 4 4 4 进制数 ( 003 ) 4 (003)_4 (003)4 可以由 ( 010 ) 4 − ( 001 ) 4 (010)_4-(001)_4 (010)4−(001)4 ,于是我们终于正式开始DP啦!
设两个结构体数组, f i f_i fi 和 g