随笔分类 -  字符串

摘要:[无link] 现给出一个字符串,它为一个环,可以从任意位置分开后顺时针构成一个整数,求构造的最大整数是多少? 对于该问题,我们在遍历更新的时候,如果比较了大于1次才得出大小关系,我们应该从最后一次比较的位置继续,反之,应该从第一次比较的下一个位置继续比较。 对于该策略证明: 1 如果只比较一次,显 阅读全文
posted @ 2023-11-08 23:37 Simex 阅读(4) 评论(0) 推荐(0) 编辑
摘要:Jisoo 不知道该怎么做? 匹配,开个栈并记录。删掉一个单词以后就从上一个单词的位置继续匹配。 为什么匹配过程不跳 fail?因为题目保证没有单词是另外一个单词的字串。 #include<cstdio> #include<iostream> #include<cstring> #include<i 阅读全文
posted @ 2021-11-08 17:27 Simex 阅读(34) 评论(0) 推荐(0) 编辑
摘要:Jisoo manacher算法有个性质 就是求出来的pi是以i为中心的回文串长度+1 所以manacher求出p,差分一下就行了。 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include 阅读全文
posted @ 2021-11-08 17:24 Simex 阅读(37) 评论(0) 推荐(0) 编辑
摘要:AC自动机 这些东西还是交给wiki 模板 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<stack> #include<queue> #include 阅读全文
posted @ 2021-11-05 23:09 Simex 阅读(30) 评论(0) 推荐(0) 编辑
摘要:Jisoo 找一个最长的周期 就是要找最短的border然后加上中间的部分 这样 kmp出动 然后发现可以 “记忆化”一波进行优化 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<alg 阅读全文
posted @ 2021-10-17 17:42 Simex 阅读(38) 评论(0) 推荐(0) 编辑
摘要:LIsa 就DP本身来说非常好想,但是怎样知道这个东西有没有在字典里出现过呢 hash似乎还是有点慢 这时候就应该用字典树了 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorith 阅读全文
posted @ 2021-10-14 21:49 Simex 阅读(16) 评论(0) 推荐(0) 编辑
摘要:Lisa 很水的kmp小题 思考一下就可以知道,肯定要跑kmp,但是当我们删掉一个串后剩下怎么办 答:从上一次的位置接着匹配 记录一下这个东西就行了 #include<iostream> #include<cstring> #include<iostream> using namespace std 阅读全文
posted @ 2021-10-13 17:56 Simex 阅读(33) 评论(0) 推荐(0) 编辑
摘要:LIsa 只要理解kmp,就会知道应该找前缀和后缀了 把当前输入的串和已知的答案串拼起来,然后中间加上一个小小的不存在字符,跑kmp #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cm 阅读全文
posted @ 2021-10-12 15:53 Simex 阅读(23) 评论(0) 推荐(0) 编辑
摘要:Jisoo 枚举一下next也没事 也可以运用结论 这个结论画个图证明就可以了 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> us 阅读全文
posted @ 2021-10-12 13:58 Simex 阅读(33) 评论(0) 推荐(0) 编辑
摘要:Jisoo kmp中的next数组表示按照当前位置结尾的相同的最大真前缀和后前缀长度 那么如果这玩意真的存在,那么next[n] 一定不为零 然后枚举一下2-n-1,找找有没有相等的next就可以了 #include<cstdio> #include<iostream> #include<cstri 阅读全文
posted @ 2021-10-12 13:53 Simex 阅读(31) 评论(0) 推荐(0) 编辑
摘要:Archie 本文为倍增做法 后缀数组题 后缀数组是啥,把所有的后缀排个序就是后缀数组了 显然的暴力做法就是全部sort一遍 这不白瞎 我们利用倍增的思想,显然可以把一个字符串分成两半进行比较就可以了 引用一下wiki的图片。 这里有两个数组 SAi表示第i小的后缀的编号 而RKi表示第 阅读全文
posted @ 2021-07-20 17:53 Simex 阅读(101) 评论(0) 推荐(0) 编辑
摘要:Aimee 鉴于本人代码一开始写得非常不美观 所以说一堆特判 边界是a+b2<=K!=0时不存在 然后一堆特殊情况 #include<iostream> #include<cstdio> #include<cstring> int a,b,k,z; using namespace std 阅读全文
posted @ 2021-02-24 09:14 Simex 阅读(50) 评论(0) 推荐(0) 编辑
摘要:Aimee 马拉车算法,以优秀复杂度求解回文子串 我认为的关键:减少重复计算 用r表示当前已知回文子串右边界,id表示其中心的位置 显然我们当下求解的i应该再id右边 如果这个i在r的左边,那么显然在id的中心中,因该有一个关于i的对称点,并且因为位置的的原因,左边点的回文是已经被算出来了的,那样可 阅读全文
posted @ 2021-02-02 17:13 Simex 阅读(35) 评论(0) 推荐(0) 编辑
摘要:Aimee 很简单的字典树 不知道为什么,写了struct就会TLE #include<iostream> #include<cstring> #include<cstdio> #include<cstring> using namespace std; int vis[100001]; int n 阅读全文
posted @ 2020-12-02 21:30 Simex 阅读(61) 评论(0) 推荐(0) 编辑
摘要:Miku 找规律,非常简单。 (然而蒟蒻被边界条件搞炸了) #include<iostream> #include<cstdio> #include<algorithm> using namespace std; unsigned long long k; int n; unsigned long 阅读全文
posted @ 2020-08-04 19:51 Simex 阅读(106) 评论(0) 推荐(0) 编辑
摘要:Miku 简单版就是个单纯的模板 ac自动机是啥,就是一个加了类似于kmp的next数组的tire树 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<qu 阅读全文
posted @ 2020-08-03 21:52 Simex 阅读(102) 评论(0) 推荐(0) 编辑
摘要:Miku 字典树部分非常好解决,只要把最后每个单词结尾处记录下翻译成了啥 但是输出很麻烦,要处理空格,回车,换行和标点符号 不过有string在,还行 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> 阅读全文
posted @ 2020-08-03 17:36 Simex 阅读(105) 评论(0) 推荐(0) 编辑
摘要:Miku 字典树模板题级别 字典树是啥,就是一颗从根走到底就找到了一个单词的树 非常好理解 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<istream> using namesp 阅读全文
posted @ 2020-08-03 17:32 Simex 阅读(64) 评论(0) 推荐(0) 编辑
摘要:链接:Miku hash?不不不,kmp走起 唯一的问题是最后要有一个dp来解决 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n; const i 阅读全文
posted @ 2020-07-31 13:07 Simex 阅读(150) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 大佬的证明 我的代码 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<map> using namespace std; char aim[1500001]; int 阅读全文
posted @ 2020-07-30 16:26 Simex 阅读(152) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示