上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 53 下一页
摘要: 后缀自动机+dp 想了挺长时间 后缀自动机的状态图是一个dag,从root走到一个点的路径数代表了这个状态包含的子串,我们先预处理出来每个节点向后走能够形成多少子串,注意这里不是直接在parent树上求和,我们先求出每个节点的right集合的大小,然后在状态图上统计儿子的路径数,因为向儿子走相当于添 阅读全文
posted @ 2017-11-18 17:32 19992147 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机 辣鸡四平OJ 就是多串LCS,有点像AC自动机。先对一个串建立自动机,然后让其他串在上面跑。我们从根节点开始走,每次看儿子是否有这种字符,有的话直接向下走,步数+1,否则沿着par走,直到有为止。par的过程其实是不断缩短当前串来继续匹配。最后按parent树从叶子向上进行dp,每个点保 阅读全文
posted @ 2017-11-18 17:27 19992147 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 终于看懂了,写一点东西以防忘记,不保证讲的都对 1.什么是自动机?自动机是指对于一个自动机A,如果能识别字符串S,那么A(S)=true,否则A(S)=false,就像AC自动机能够识别给定文本中特定的文本一样。 1.5:后缀自动机和AC自动机一样,有两个比较重要的东西,AC自动机一般我们会碰到在自 阅读全文
posted @ 2017-11-17 21:15 19992147 阅读(236) 评论(0) 推荐(0) 编辑
摘要: ntt+cdq分治 原来zwh出的cf是斯特林 第二类斯特林数的定义是S(i,j)表示将i个物品分到j个无序集合的方案数,那么这道题中S(i,j)*j!*2^j是指将i个物品分到j个有序集合中并且每个集合可以选或不选的方案数,那么我们改变这个公式,得出 F[i]=∑F[j]*2*C(i,j),j=0 阅读全文
posted @ 2017-11-15 14:52 19992147 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机 留个板子 upd:大概懂了 每次新加入的npRight集合肯定只有最后一个位置,那么求所有长得不一样的子串贡献就是Max-Min+1,因为Right集合只有这一个位置,所以这Max-Min+1个子串只出现在最后一个位置。 #include<bits/stdc++.h> using nam 阅读全文
posted @ 2017-11-15 14:14 19992147 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 又是一年noip...再次炸裂 day0::发烧了,不知道该干些什么,打了几个板子,想了想常用的技巧,就睡觉了。 day1:看见第一题第一反应不会做,推了一会去做第二题,一个小时终于调对了,然后突然yy出了第一题的结论,此时还有两个小时,开第三题,思路比较明显,大概是个dp,但是似乎状态之间有环,于 阅读全文
posted @ 2017-11-13 21:01 19992147 阅读(227) 评论(0) 推荐(1) 编辑
摘要: 树形dp 先拎出来一条直径,然后看直径上挂着的每条链,如果等于左边就把左端点放过来,等于右端点就把右端点放过来 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long 阅读全文
posted @ 2017-11-06 09:51 19992147 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 树形dp 很明显我们可以枚举一条边,然后求两边的重心,这样是暴力,我们用一些奇怪的方法来优化这个找重心的过程,我们先预处理出来每个点最大和第二的儿子,然后每次把断掉的子树的贡献减掉,每次找重心就是向最大或第二大的儿子走,如果最大的儿子被减掉后比第二大的儿子小或者这条边被剪掉了,那么就向第二大的儿子走 阅读全文
posted @ 2017-11-04 13:27 19992147 阅读(168) 评论(0) 推荐(0) 编辑
摘要: dp+树状数组 思维僵化怎么办。。。 我们都知道,如果两个序列中所有元素都不相同,那么可以用lis求解,复杂度nlogn,但是这道题不行,每种元素出现了5次。。。然后我一直在想有没有什么解决办法 事实上是这个样子的,考虑二维dp,dp[i][j]=dp[i-1][j-1]+1当且仅当s[i]==t[ 阅读全文
posted @ 2017-11-02 21:41 19992147 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 题面:不存在的 我们先dfs一次,只保留每个分叉最上面的颜色,并求到根的前缀和,这就是每个点到根的和,记为s1,然后我们求子树里的,这里只保留了最上面的颜色,那么我们求树链的并,做树上前缀和,这就是子树颜色的和,记为s2,s1+s2就是子树和到根颜色的并,因为只保留了最上层的颜色,也就是说对于一个点 阅读全文
posted @ 2017-11-02 16:57 19992147 阅读(154) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 53 下一页