并不对劲的bzoj3277】的更多相关文章

陈年老坑 题意大概是有n个字符串,要求出每一个字符串的所有子串(不包括空串)在所有字符串(包括自身)中出现次数不少于k的有多少个.n,k,字符串总长<=100000. 如果只有一个串的话,非常好办,直接把它建成后缀自动机就行了. 那么不止一个串该怎么办呢?想必是也可以用后缀自动机解决的.这时就要建出一棵Trie树的后缀自动机. 这就是广义呕吐之光后缀自动机 #include<iostream> #include<cstring> #include<cstdlib>…
[BZOJ3277]串(后缀自动机) 题面 BZOJ 题解 广义后缀自动机??? 照着别人的打了一遍.. 相当于每个串都构建一个后缀自动机 构建完一个串之后,直接把当前的last指回root就行了??? 好吧,我觉得我看了一个假的广义后缀自动机.. 不过这道题这样就行了 考虑如何计算一个串在多少个母串中出现过? 考虑他的\(right\)集合中有多少个母串的结束位置就好了 那么,每个节点开个\(set\)存一下,然后按照拓扑序向上合并一次 因为\(parent\)包含的母串个数一定较大, 所以,…
因为不会SAM,考虑SA.将所有串连起来并加分隔符,每次考虑计算以某个位置开始的子串有多少个合法. 对此首先二分答案,找到名次数组上的一个区间,那么只需要统计有多少个所给串在该区间内出现就可以了.这是一个主席树的经典问题,对每个数找到上次出现位置扔进去即可.这样就做到O(nlog2n)了. 可以进一步优化到O(nlogn),不是很会. 以及我又不会写SA了,没救. #include<iostream> #include<cstdio> #include<cmath> #…
[BZOJ3473][BZOJ3277]字符串 试题描述 给定 \(n\) 个字符串,询问每个字符串有多少子串(不包括空串)是所有 \(n\) 个字符串中至少 \(k\) 个字符串的子串? 输入 第一行两个整数 \(n\),\(k\). 接下来 \(n\) 行每行一个字符串. 输出 一行 \(n\) 个整数,第 \(i\) 个整数表示第 \(i\) 个字符串的答案. 输入示例 3 1 abc a ab 输出示例 6 1 3 数据规模及约定 对于 \(100\%\) 的数据,\(1 \le n\)…
[BZOJ3277]串 Description 字符串是oi界常考的问题.现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串(注意包括本身). Input 第一行两个整数n,k. 接下来n行每行一个字符串. Output 输出一行n个整数,第i个整数表示第i个字符串的答案. Sample Input 3 1 abc a ab Sample Output 6 1 3 HINT 对于100%的数据,n,k,l<=100000 题解:需要的用的方法好像有…
一些感想 现实并非游戏,并不支持反复刷关 猎人和防御工事一起被老山龙摧毁了: 猎人惨死雨中,结云村永无放晴之日: 猎人被狂龙病毒侵蚀,天空山上黑蚀龙泛滥. 好像这才是怪物猎人系列的真实结局呢 day 0 和吕爷立下了有关进省队的flag day 1 t1:给1个大数字串和\(m\)个小数字串,每个小串有权值,大串中有些位置的数字是确定的,有些位置是空的,需要填.定义一种填数方式生成的大串的价值为"是它的子串的小串的权值积(重复算多个)"开"是它的子串的小串的个数(重复算多个)…
想要很对劲的讲解,请点击这里 题目大意 有一棵\(n\)(\(n\leq 50000\))个节点的树,有边权 求一条路径使该路径的边权平均值最接近给出的一个数\(k\) 输出边权平均值下取整的整数部分 题解 有关路径的边权平均值可以二分来做 假设已二分出边权平均值与\(k\)的差不超过\(m\),则应存在一条简单路径,路径上的\(p\)条边满足: \[-m\leq\frac{\sum_{i=1}^{p}{w_i}}{p}-k\leq m\] 两边同乘\(p\),得: \[-m*p\leq\sum…
FFT是一个很多人选择背诵全文的算法. #include<algorithm> #include<cmath> #include<complex> #include<cstdio> #include<cstdlib> #include<cstring> #include<ctime> #include<iomanip> #include<iostream> #include<map> #…
据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 并不会讲Trie树. 1.poj1056-> 模板题. 2.bzoj1212-> 设dp[i]表示T长度为i的前缀能否被理解.这样,对于所有满足T[(x+1)...i]是一个字典中的单词的x,dp[i]|=dp[x]. 所以,就可以将所有字典中的单词倒着建一棵Trie树,计算i时将T长度为i的前缀倒着在Trie树中匹配. 最后从后往前枚举i,第一个dp[i]=1的i就是答案. #include<algorithm…
据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 先感叹一句<信息学奥赛一本通提高篇>上对kmp的解释和matrix67的博客相似度99%(还抄错了),莫非matrix67藏在编者之中? 但这不重要,因为并不对劲的人不会对kmp作出任何解释. 课后练习: 1.bzoj1355-> 可以将题目中给出的字符串看成形如这样的串: 那么,对于其中的某一位: 它到当前前缀的第二个循环节的开始组成的子串和前缀相等: 所以,对于当前位置x,fail[x]就是它到当前前缀的第二…