随笔分类 -  字符串

摘要:题目描述: 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串。 例如当S=(22,333,0233)时,233是幸运数,2333、20233、3223不是幸运数。 给定N和S,计算不大于N的幸运数个数。 题解:trie图上数位dp。 好像很裸的样子。 代 阅读全文
posted @ 2018-11-30 19:38 LiGuanlin 阅读(174) 评论(0) 推荐(0)
摘要:题目大意: 给出两个串(长度<=1e6),问是否同构,如果同构输出最小表示。 题解: 这是最小表示法模板题。在这里好好讲一下最小表示法。 首先有一个最暴力的方法:把所有表示搞出来排序。 时间复杂度O(n^2logn); 然后可以发现,比较两个字符串时都是从第一位向后比。 伪代码: 时间复杂度O(n^ 阅读全文
posted @ 2018-11-26 17:44 LiGuanlin 阅读(158) 评论(0) 推荐(0)
摘要:题目大意: 你有两种机器,一种可以生产回文串,一种可以链接两个串。链接时可以覆盖相同前/后缀。 给出多个串,求最少链接多少次。 题解:先做manacher找出最长回文,然后贪心发现这是线段覆盖。 排序然后搞就行了。 代码: 阅读全文
posted @ 2018-11-25 09:01 LiGuanlin 阅读(125) 评论(0) 推荐(0)
摘要:题目大意: 输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。 题解:若X,Y都是回文串且相邻,则共用一个’#‘。 可以对于每个‘#’找出其左边界和右边界。 代码: 阅读全文
posted @ 2018-11-25 08:23 LiGuanlin 阅读(165) 评论(0) 推荐(0)
摘要:题目贴图: 题解: AC自动机/Trie图+矩阵乘法。 首先构建矩阵,因为有: f[ i ] = Σ f[ j ] * g[ j ][ i ] 然后就搞成矩乘了。 把邻接矩阵自乘足够多次就行了。 代码: 阅读全文
posted @ 2018-11-24 20:16 LiGuanlin 阅读(239) 评论(0) 推荐(0)
摘要:题目大意: 求包含n个串的长度最短,且字典序最小的串。 题解: AC自动机/Trie图 + bfs。 我用的是Trie图。 把所有串扔到Trie树上,Trie图建fail指针。 然后的bfs搜索路径。 遍历时从小到大,可以保证字典序最小。 状态中压入各个子串出现过/为出现过。 代码: 阅读全文
posted @ 2018-11-24 16:27 LiGuanlin 阅读(286) 评论(0) 推荐(0)
摘要:题目描述: 给出n个串(总长<=30000),求是否有一个无限长的串,使得不包含任何一个给出串。 题解: 建trie图,然后搜索。 搜索时如果这个点搜过以后无法return true,那么我们可以标记这个点。 只要再次搜到这个点直接return false 代码: 阅读全文
posted @ 2018-11-24 11:09 LiGuanlin 阅读(121) 评论(0) 推荐(0)
摘要:题目描述: 喜欢钻研问题的JS 同学,最近又迷上了对加密方法的思考。一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法。 例如‘JSOI07’,可以读作: JSOI07 SOI07J OI07JS I07JSO 07JSOI 7JSOI0 把它们按照 阅读全文
posted @ 2018-11-24 09:52 LiGuanlin 阅读(151) 评论(0) 推荐(0)
摘要:题目描述 一年一度的“幻影阁夏日品酒大会”隆重开幕了。大会包含品尝和趣味挑战 两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加。 在大会的晚餐上,调酒师 Rainbow 调制了 n 杯鸡尾酒。这 n 杯鸡尾酒排成一行,其中第 n 杯酒 (1 ≤ i ≤ n) 被贴 阅读全文
posted @ 2018-09-29 17:58 LiGuanlin 阅读(288) 评论(0) 推荐(0)
摘要:题目大意:给出n个数的序列和m,求数列中出现至少m次的最大长度。 本来可以用trie树和ac自动机/trie图搞一搞,但是数据范围太大。 后缀数组+RMQ: 阅读全文
posted @ 2018-09-25 16:19 LiGuanlin 阅读(123) 评论(0) 推荐(0)
摘要:题目描述:给出长度为n的数字串,求两个串,满足: 1.长度相等且大于5; 2.对应项差值相同; 代码: 阅读全文
posted @ 2018-09-25 14:10 LiGuanlin 阅读(128) 评论(0) 推荐(0)
摘要:题目大意:给出一个长度不大于2e6的字符串,求最长回文串长度。 人话:敲一遍manacher板子。 代码: 阅读全文
posted @ 2018-09-24 08:16 LiGuanlin 阅读(115) 评论(0) 推荐(0)
摘要:题目描述 a180285 幸运地被选做了地球到喵星球的留学生。他发现喵星人在上课前的点名现象非常有趣。 假设课堂上有 N 个喵星人,每个喵星人的名字由姓和名构成。喵星球上的老师会选择M 个串来点名,每次读出一个串的时候,如果这个串是一个喵星人的姓或名的子串,那么这个喵星人就必须答到。 然而,由于喵星 阅读全文
posted @ 2018-09-22 11:20 LiGuanlin 阅读(226) 评论(2) 推荐(0)
摘要:题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的。现在你要处理的就是一段没有标点的文章。 一段文章T是由若干小写字母构成。一个单词W也是由若干小写字母构成。一个字典D是若干个单词的集合。我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分,且每一个部分都 阅读全文
posted @ 2018-09-20 11:17 LiGuanlin 阅读(122) 评论(0) 推荐(0)
摘要:题目描述 打字机上只有28个按键,分别印有26个小写英文字母和'B'、'P'两个字母。经阿狸研究发现,这个打字机是这样工作的: ·输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最后)。 ·按一下印有'B'的按键,打字机凹槽中最后一个字母会消失。 ·按一下印有'P'的按键,打字机会 阅读全文
posted @ 2018-09-19 18:26 LiGuanlin 阅读(162) 评论(0) 推荐(0)
摘要:给定一个字符串,要求O(n)时间求出其最长回文串长度。 首先我们是会O(n^2)的暴力的,就是枚举每个字符作为对称中心,再枚举相同的相邻字符作为对称中心,然后求得答案。 能不能优化呢? 我们发现,当一个字符串是回文串时,它满足完全对称,比如: abadaba 设p[i]为以i为中心的回文半径,则p为 阅读全文
posted @ 2018-09-18 21:16 LiGuanlin 阅读(135) 评论(0) 推荐(0)
摘要:后缀数组板子,给出一个字符串,要求输出sa数组。 首先声明一下各数组的作用。 rank:序列上的点->点权; sa:排名->位置; tmp:辅助数组; 阅读全文
posted @ 2018-09-18 19:43 LiGuanlin 阅读(200) 评论(0) 推荐(0)
摘要:给你一个字符集合,你从其中找出一些字符串出来. 希望你找出来的这些字符串的最长公共前缀*字符串的总个数最大化. 第一行给出数字N.N在[2,1000000] 下面N行描述这些字符串,长度不超过20000 。保证输入文件不超过10MB 不知道他在考什么,但是我知道这种题卡空间。 所以我就用hash水过 阅读全文
posted @ 2018-09-18 13:18 LiGuanlin 阅读(217) 评论(0) 推荐(0)
摘要:ac自动机裸题,但我还是写的trie图。 还有,访问过的点要打标记,不然会tle。 代码: 阅读全文
posted @ 2018-09-18 12:46 LiGuanlin 阅读(208) 评论(0) 推荐(0)
摘要:题目描述 JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版。 该软件可以随机生成一些文章―――总是生成一篇长度固定且完全随机的文章—— 也就是说,生成的文章中每个字节都是完全随机的。如果一篇文章中至少包含使用者 阅读全文
posted @ 2018-09-18 09:57 LiGuanlin 阅读(316) 评论(0) 推荐(0)