随笔分类 -  动态规划

摘要:思路: 参照blog,用状压DP做,和题解稍微有点不一样,我这里直接储存了状态而不是索引。 这一题的问题是怎么判断相邻不能种,我们用2进制来表示每一行的种植情况。我们将每一行所能够造的所有可能都打表(即认为每一块都能种),然后将每一行不能种的地方用2进制保存下来,两者&运算聚能知道是否有重合,重合即 阅读全文
posted @ 2018-07-16 16:49 KirinSB 阅读(183) 评论(0) 推荐(0)
摘要:思路: 每个槽有4种深度,一共有2^4种状态。然后开4维来保存每一次的状态:dp[ 第几个槽 ][ 当前状态 ][ 末尾深度 ][ 是否符合要求 ]。 代码: 阅读全文
posted @ 2018-07-16 12:00 KirinSB 阅读(269) 评论(0) 推荐(0)
摘要:思路: 把0~9的状态用3进制表示,数据量3^10 代码: 阅读全文
posted @ 2018-07-16 09:53 KirinSB 阅读(160) 评论(0) 推荐(0)
摘要:题意:美丽数定义:一个正数能被所有位数整除。求给出一个范围,回答这个范围内的美丽数。 思路:一个数能被所有位数整除,换句话说就是一个数能整除所有位数的LCM,所以问题就转化为一个数能否被所有位数的LCM整除。按照一般的思想,直接开三维dp[pos][num][lcm]。但是num范围很大,直接开就爆 阅读全文
posted @ 2018-07-14 22:49 KirinSB 阅读(279) 评论(0) 推荐(0)
摘要:思路: 之前想直接开左右两边的数结果爆内存... 枚举每次pivot的位置,然后数位DP,如果sum<0返回0,因为已经小于零说明已经到了pivot右边,继续dfs只会越来越小,且dp数组会炸 注意一下一些细节:dp开long long,注意前导零只能算一次 代码: 阅读全文
posted @ 2018-07-14 16:28 KirinSB 阅读(201) 评论(0) 推荐(0)
摘要:思路: 设dp[i]为覆盖i所用的最小数量,那么dp[i] = min(dp[k] + 1),其中i - 2b <= k <= i -2a,所以可以手动开一个单调递增的队列,队首元素就是k。 初始状态为dp[0] = 0,注意喷水覆盖的范围是偶数且不重叠,所以插入队列的必是偶数。有牛的地方不能作为边 阅读全文
posted @ 2018-07-12 10:26 KirinSB 阅读(177) 评论(0) 推荐(0)
摘要:思路: 只要把status那里写清楚就没什么难度T^T,当然还要考虑前导零! 代码: 阅读全文
posted @ 2018-07-08 15:12 KirinSB 阅读(220) 评论(0) 推荐(0)
摘要:思路: 这里的状态分为3种,无13和末尾的1,无13且末尾为1,有13,然后DFS 等我搞清楚数位DP就来更新Orz 代码: 阅读全文
posted @ 2018-07-07 22:03 KirinSB 阅读(216) 评论(0) 推荐(0)
摘要:思路: dp[pos][pre]代表长度为pos的不大于pre的个数 阅读全文
posted @ 2018-07-07 18:31 KirinSB 阅读(155) 评论(0) 推荐(0)
摘要:思路: 详解 数位DP入门题dp[pos][sta],pos代表当前位数是第几位,sta代表当前状态,因为题目中只要不出现64,所以当前状态只分为两种:前一位是6或不是。 阅读全文
posted @ 2018-07-07 14:44 KirinSB 阅读(162) 评论(0) 推荐(0)
摘要:思路: 直接DP也能做,这里用斜率DP。 dp[i] = min{ dp[j] + ( sum[i] - sum[j] + 10 )*pr[i]} ; k<j<i => dp[j] - dp[k] <pr[i]*( sum[j] - sum[k] ) 再套模板 阅读全文
posted @ 2018-07-05 11:22 KirinSB 阅读(138) 评论(0) 推荐(0)
摘要:思路:大白里Trie的例题,开篇就是一句很容易推出....orz这里需要Trie+DP解决。仔细想想我们可以得到dp[i]=sum(dp[i+len[x]])。这里需要解释一下:dp是从最后一个字母往前dp,dp[i]代表从i这个字符开始到最后一个字符的这个字符串(就... 阅读全文
posted @ 2018-05-15 13:10 KirinSB 阅读(180) 评论(0) 推荐(0)
摘要:Tri TilingTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4343 Accepted Sub... 阅读全文
posted @ 2018-03-02 16:23 KirinSB 阅读(385) 评论(0) 推荐(0)
摘要:命运Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 21193 Accepted Submission... 阅读全文
posted @ 2018-03-02 13:15 KirinSB 阅读(163) 评论(0) 推荐(0)