摘要: 思路:和上一篇思路一样,但是这里要求最大能排几个,这里要开三维,记录上次和上上次的状态,再一一判定,状态转移方程为 dp[i][j][k] = max(dp[i][j][k],dp[i - 1][k][t] + num[j]) 代码: 阅读全文
posted @ 2018-07-16 19:28 KirinSB 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 思路: 参照blog,用状压DP做,和题解稍微有点不一样,我这里直接储存了状态而不是索引。 这一题的问题是怎么判断相邻不能种,我们用2进制来表示每一行的种植情况。我们将每一行所能够造的所有可能都打表(即认为每一块都能种),然后将每一行不能种的地方用2进制保存下来,两者&运算聚能知道是否有重合,重合即 阅读全文
posted @ 2018-07-16 16:49 KirinSB 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 思路: 每个槽有4种深度,一共有2^4种状态。然后开4维来保存每一次的状态:dp[ 第几个槽 ][ 当前状态 ][ 末尾深度 ][ 是否符合要求 ]。 代码: 阅读全文
posted @ 2018-07-16 12:00 KirinSB 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 思路: 把0~9的状态用3进制表示,数据量3^10 代码: 阅读全文
posted @ 2018-07-16 09:53 KirinSB 阅读(154) 评论(0) 推荐(0) 编辑