摘要: 题意:略。思路:第一次做状态压缩的dp。在这里说一下状态压缩的原则。因为每一行只有最多12个格子,每个格子只有1(可放牛)和0(不可放牛)两种状态,这总共是2^12种状态,直接用一个int整型变量从0枚举到2^12 - 1。对于每一个数,将其转换成二进制,先判断格子为0时该数二进制对应位上是不是1,若是则该状态不可行。其次再判断该数相邻的两位有没有同时为1的情况,如果有,该状态也不可行。递推公式就是:dp[i][k] = dp[j][k-1]。其中dp[i][k]表示在牧场第k行状态为i时可行解的数量。它等于上一层所有可行状态的可行解数量之和。在dp过程中,在判断该层的上一层某状态是否可行时, 阅读全文
posted @ 2013-08-19 16:22 fenshen371 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题意:略。思路:第一次写的时候搞复杂了,弄得跟计算几何似的= =递推公式很好想,就是dp[x2][y2][t] = max(dp[x2][y2][t], dp[x1][y1][t-1] + online(x2, y2, x1, y1)。其中dp[x2][y2][t]表示在时间点t锤子选择砸到点(x2, y2)处时的最大积分,点(x1, y1)与点(x2, y2)距离不大于d,online函数计算的是以这两点为端点的线段上有几只地鼠。另外,本题中锤子可以砸到坐标系外面,如果不考虑此种情况会wa。处理方法是,读取坐标时横纵坐标都加5(5为锤子可移动距离d的最大值)。更多细节见代码即注释。 1 #i 阅读全文
posted @ 2013-08-19 10:21 fenshen371 阅读(221) 评论(0) 推荐(0) 编辑