
字符串
易橙
FDU硕士在读,退役ACMer。
展开
-
01字典树模板
const int maxn=1e5+5;struct Trie{ int val[maxn*31],tree[maxn*31][2],L,root; int newnode(){ mem(tree[L],-1); return L++; } void init(){ L=0; root=newnode(); } void update(int x,int key){ int now=root; for(int i=31;i>=0;i--){ int p=(原创 2021-02-02 12:21:01 · 160 阅读 · 0 评论 -
【字符串】AC自动机
模板洛谷P3808:#include<bits/stdc++.h>#pragma GCC optimize(2)#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for(int i=n;i>=a;i--)#define endl '\n'#define eps 0.000000001#define pb push_back#define mem(a,b) me原创 2020-08-02 22:07:06 · 226 阅读 · 0 评论 -
【字符串】关于循环字符串字典序最大最小位置表示法
hdu3374题意:给出一个字符串,依次左移一个单位形成一堆字符串,求其字典序最小和最大的字符串需要左移多少位,以及一共有几个这样的字符串。题目分析:首先可以确定两个字符串出现的次数应该相同。由于假设最小的左移m位得到最大的话,那么所有相同的最小字符串左移m位都会得到最大串。对于求解最小最大串的位置可以用最小最大表示法。最大最小表示法:总的来说就是这道题的模板,求一个循环串字典序的最小和最大的位置。算法整体思想很简单,以最小为例如题,指针i,j分别代表比较的两个串的串首位置,这两个位置是互相更新的。当原创 2020-07-30 17:39:22 · 601 阅读 · 0 评论 -
【字符串】扩展KMP
板子:HDU2594#include<iostream>#include<cstring>#include<algorithm>#include<vector>#include<cmath>#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for(int i=n;i>=a;i--)#define endl '\n原创 2020-07-28 21:48:52 · 135 阅读 · 0 评论 -
【字符串】序列自动机
#include<bits/stdc++.h>#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for(int i=n;i>=a;i--)#define endl '\n'#define mem(a) memset(a,0,sizeof(a))#defin...原创 2020-03-14 17:08:24 · 189 阅读 · 0 评论 -
【字符串/数据结构】Trie树(字典树、前缀树)
感谢:https://blog.youkuaiyun.com/qq_38891827/article/details/80532462原创 2020-01-29 15:56:43 · 486 阅读 · 0 评论 -
【字符串】Manacher算法
#include<bits/stdc++.h>using namespace std;const int maxn=32000005;char s[maxn];char s_new[maxn];int p[maxn];int Init(){ int len = strlen(s); s_new[0] = '$'; s_new[1] = '#';...原创 2020-01-29 13:31:23 · 185 阅读 · 0 评论 -
【字符串】字符串哈希hash算法
以洛谷P3370为引子引入吧:Part1. 浅谈哈希:哈希其实是所有字符串操作中,笔者认为最简单的操作了(except输入输出qwq)。哈希的过程,其实可以看作对一个串的单向加密过程,并且需要保证所加的密不能高概率重复(就像不能让隔壁老王轻易地用它家的钥匙打开你家门一样qwq),通过这种方式来替代一些很费时间的操作。比如,最常见的,当然就是通过哈希数组来判断几个串是否相同(洛谷P3370)...原创 2020-01-29 12:23:49 · 845 阅读 · 0 评论 -
【字符串】KMP算法
对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O(m*n),而如果用KMP算法,复杂度将会减少线型时间O(m+n)。KMP这个是查找这个串在母串的位置#include<bits/stdc++.h>using namespace std;char s[100005],p[100005];int net[100005];void getnext(char ...原创 2020-01-19 17:26:37 · 303 阅读 · 0 评论