上一页 1 2 3 4 5 6 ··· 11 下一页
摘要: "POJ 3518 Boring " Problem : 给一个串S,询问串S有多个子串出现至少两次且位置不重叠。 Solution : 对S串建立后缀自动机,再建立后缀树,dfs一遍统计处每个结点的子树中最长节点max和最短节点min。枚举一遍后缀自动机的节点,那么对于其对应后缀的长度要求为小于等 阅读全文
posted @ 2017-07-22 19:54 rpSebastian 阅读(139) 评论(0) 推荐(0) 编辑
摘要: "POJ 3415 Common Substrings " Problem : 给两个串S、T (len include using namespace std; const int N = 200008; struct edge { int v, nt; }; struct Suffix_Auto 阅读全文
posted @ 2017-07-22 19:48 rpSebastian 阅读(297) 评论(0) 推荐(0) 编辑
摘要: "HDU 4416 Good Article Good sentence " Problem : 给一个串S,和一些串T,询问S中有多少个子串没有在T中出现。 Solution : 首先对所有的T串建立后缀自动机,统计出本质不同的子串个数ans1,再将S串插入后缀自动机,统计出本质不同的子串个数an 阅读全文
posted @ 2017-07-21 17:42 rpSebastian 阅读(519) 评论(0) 推荐(1) 编辑
摘要: "SPOJ SUBLEX " Problem : 给一个长度为n的字符串,要求输出字典序第k小的子串。 Solution : 首先对字符串建立后缀自动机。从根节点开始根据nt数组即后缀链进行一边dfs记忆化搜索,预处理出当前状态下之后还能形成的字符串数量。对于每一个询问,从小到大枚举每一位的每个字母 阅读全文
posted @ 2017-07-21 17:01 rpSebastian 阅读(274) 评论(0) 推荐(0) 编辑
摘要: "SPOJ NSUBSTR" Problem : 给一个长度为n的字符串,要求分别输出长度为1~n的子串的最多出现次数。 Solution : 首先对字符串建立后缀自动机,在根据fail指针建立出后缀树,对于n个后缀对应的节点打上标记,则每个结点对应的一些子串所出现的次数即为其子树内标记的个数,在后 阅读全文
posted @ 2017-07-21 16:57 rpSebastian 阅读(234) 评论(0) 推荐(0) 编辑
摘要: "SPOJ LCS2" Problem : 给若干个串,询问这些串的最长公共子串。 Solution : 对第一个串建立后缀自动机,对于之后的每个串在后缀自动机上进行匹配。每个节点记录当前串所匹配到的长度以及所有串所匹配到的长度最小值,需要注意的是如果一个串在某个节点匹配成功,那么其fail到根的路 阅读全文
posted @ 2017-07-21 14:13 rpSebastian 阅读(216) 评论(0) 推荐(0) 编辑
摘要: "SPOJ LCS" Problem : 给两个串S、T,询问两个串的最长公共子串。 Solution : 复(yu)习(xi)了一下后缀自动机。后缀自动机一定要结合后缀树来理解呀 !!!后缀自动机的fail指针实现了原串的逆序的后缀树,后缀自动机的nt转移数组相当于后缀树上的后缀链。 C++ in 阅读全文
posted @ 2017-07-21 12:14 rpSebastian 阅读(206) 评论(0) 推荐(0) 编辑
摘要: "POJ 2778 DNA Sequence" Problem : 给m个只含有(A,G,C,T)的模式串(m include include using namespace std; const int N = 208; const int mo = 100000; int id[128]; st 阅读全文
posted @ 2017-07-17 11:29 rpSebastian 阅读(151) 评论(0) 推荐(0) 编辑
摘要: "HDU 2896 病毒侵袭" Problem : 给n个模式串,m个目标串,询问每个目标串含有哪些模式串。 Solution : 将模式串建立AC自动机,对于每个目标串,开一个数组表示每个模式串是否匹配,在AC自动机上跑一遍即可。 c++ include include include using 阅读全文
posted @ 2017-07-16 18:47 rpSebastian 阅读(208) 评论(0) 推荐(0) 编辑
摘要: "HDU 2222 Keywords search " Problem : 给若干个模式串,询问目标串中出现了多少个模式串。 Solution : 复习了一下AC自动机。需要注意AC自动机中的fail,和next的含义。fail指向了一个最长的与当前匹配出具有相同后缀的一个前缀节点,next用来转移 阅读全文
posted @ 2017-07-16 17:28 rpSebastian 阅读(174) 评论(0) 推荐(0) 编辑
摘要: "1. Codeforces 55D Beautiful numbers" Problem : 询问一个区间内有多少个数,可以整除其每一位的数字。 Solution : 记录一下前若干位数字的lcm和前缀和,由于1~9的lcm是2520,所以前缀和可以对2520取模。对于合法的lcm压缩一下状态,就 阅读全文
posted @ 2017-07-15 19:35 rpSebastian 阅读(207) 评论(0) 推荐(0) 编辑
摘要: Problem C. Vladik and Memorable Trip 题目大意 有n个人打算坐火车,排成了一列。给定每个人要去的目标城市。将这些人分成若干段,同一段内的人坐在同一节车厢里面。(也可以不分配某个人,即这个人不坐火车)规定去往相同城市的人要么都不坐火车,要么都在火车的同一节车厢里面。 阅读全文
posted @ 2017-05-28 18:03 rpSebastian 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给一个长度为n的序列,有m个询问,每次询问一个区间里面第k小的数。 解题分析 静态的区间第k大。复习了一下可持久化线段树。 首先对数值离散化,建一颗权值线段树。按照序列的顺序依次插入,每一个数对应于一个版本的线段树。 对于每个询问[l,r],在第r个版本的线段树和第l个版本的线段树之间进行 阅读全文
posted @ 2017-05-05 20:27 rpSebastian 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 题目大意 一些小朋友在排队,每次来一个人,第i个人会插到第x个人的后面。权值为y。保证x∈[0,i 1]。 按照最后的队伍顺序,依次输出每个人的权值。 解题分析 好气吖。本来是在做splay练习,然后发现这道题用splay写T掉了,可能是我的splay常数太大了吧。~~要不要考虑去学一下自顶向下建树 阅读全文
posted @ 2017-05-04 21:44 rpSebastian 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题目大意 维护一个序列,支持两种操作 操作一:将第x个元素的值修改为y 操作二:询问区间【x,y】内的元素的最大值 解题分析 splay的区间操作,事先加入两个编号最小和最大的点防止操作越界。 具体的区间操作类似于线段树。 参考程序 c++ include using namespace std; 阅读全文
posted @ 2017-05-03 23:01 rpSebastian 阅读(176) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 11 下一页