bzoj 1111

来源:互联网 发布:淘宝如何办理发票 编辑:程序博客网 时间:2024/06/07 06:29

先看看网上我感觉有缺陷的题解:

有几个显而易见的结论:

  • 最高位不能高于这个数四进制表示的位数+1
  • 如果要退位 , 每次最多退一位 , 也就是把高位上的1 , 拆成4个低位
  • 每个位上的数最多只有两种状态 , 这取决于上一位是否退了

d[i][j]ii1(j==0)(j==1)退
w[i][j]

然后就可以开心的DP了 , 转移方程很好写啦……代码浓缩过 , 所以最好自己写写转移方程

我的题解:

我的方法是如果这一位是1 那么我们要算 构造1要花费的最少材料以及方案数 还有要算 构造2花费的最少材料以及方案数因为涉及到退位。

若下一位是3 那么我们从上一位 1 转移的话因为没有退位所以要花费3个单位的材料(3个1) 若从2转移那么因为有退位2-1=1现在退位后2变为1 所以现在本位多出4个小单位所以

我们要减去一个小单位花费为1 算出最小花费只有是最小花费的方案才计数。。。

关键:

如上:这道题网上好多题解都说只能退一位,但为什么只能退一位呢如果我的目标串n-1位是1  方案一:如果构造出n-1位是2 花费b个单位的材料   方案二:n-1位是3花费b-4个单位的材料那么不就可以退两位了么(先拿4个小单位来平多出的一位,那么方案一和方案二就等价了)。。。。。(这个假设下我们假设方案一是转移的最佳方案)

很显然我们必须证明在n-1都构造好的情况下第n位若构造1 2 3 4分别花费的材料差是小于4的才行 因为不用考虑0 它不退位。。。

证明:

提示:不好描述,用归纳法 因为前n-1位的情况都是一样的所以在n-1位转移到n位时材料差怎么也不会大于4的(4-1=3嘛。。。)

0 0