上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 42 下一页
摘要: 思路: 每个槽有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) 编辑
摘要: 题意:美丽数定义:一个正数能被所有位数整除。求给出一个范围,回答这个范围内的美丽数。 思路:一个数能被所有位数整除,换句话说就是一个数能整除所有位数的LCM,所以问题就转化为一个数能否被所有位数的LCM整除。按照一般的思想,直接开三维dp[pos][num][lcm]。但是num范围很大,直接开就爆 阅读全文
posted @ 2018-07-14 22:49 KirinSB 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 思路: 之前想直接开左右两边的数结果爆内存... 枚举每次pivot的位置,然后数位DP,如果sum<0返回0,因为已经小于零说明已经到了pivot右边,继续dfs只会越来越小,且dp数组会炸 注意一下一些细节:dp开long long,注意前导零只能算一次 代码: 阅读全文
posted @ 2018-07-14 16:28 KirinSB 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题意: 要求你给出每个前后缀相同的串的长度,比如: "alala"的前缀分别为{"a", "al", "ala", "alal", "alala"}, 后缀分别为{"a", "la", "ala", "lala", "alala"}. 其中有{"a", "ala", "alala"}是相同的,所以答 阅读全文
posted @ 2018-07-14 11:49 KirinSB 阅读(193) 评论(0) 推荐(1) 编辑
摘要: 思路: 这里只要注意一点,就是失配值和前后缀匹配值的区别,不懂的可以看看这里,这题因为对子串也要判定,所以用前后缀匹配值,其他的按照最小循环节做 代码: 阅读全文
posted @ 2018-07-14 10:14 KirinSB 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 思路: 最小循环节的解释在这里,有人证明了那么就很好计算了 之前对KMP了解不是很深啊,就很容易做错,特别是对fail的理解 注意一下这里getFail的不同含义 代码: 阅读全文
posted @ 2018-07-13 18:51 KirinSB 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一个矩阵,每一次一个玩家可以从任意一行中选任意数量的格子并从中拿石头(但最后总数要大于等于1),问你谁赢 思路: 一开始以为只能一行拿一个... 将每一行石子数相加就转化为经典的Nim博弈 代码: 阅读全文
posted @ 2018-07-13 14:28 KirinSB 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 题意:主串中能找到几个模式串 思路:超详细解释KMP KMP:针对这个代码,解释一下Fail数组的含义:T为主串,P为模式串,Fail代表失配值,即当P[j] != T[i]时,j要指向的位置为Fail[j],当Fail为-1时表示i指针后移。如果使用这个代码,Fail[j]的值的含义为P[0]…P 阅读全文
posted @ 2018-07-12 19:52 KirinSB 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 思路: Prim: 这道题目中有重边 Prim可以先加一个sec数组来保存重边的次小边,这样不会影响到最小生成树,在算次小生成树时要同时判断次小边(不需判断是否在MST中) Kruskal: Kruskal对重边就很友好了,不用考虑 原理是这样的:我们先找最小生成树并用used标记好哪些边是MST的 阅读全文
posted @ 2018-07-12 17:37 KirinSB 阅读(202) 评论(0) 推荐(0) 编辑
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 42 下一页