字符串
1
__meteor
对于未来, 我只是一个孩子;
展开
-
uva 11107 (后缀数组入门)
思路:找出现次数大于n/2次的最大子串,一个子串出现多次,那么他们的排名肯定是相邻的,所以利用height数组,找出相邻排名最长公共前缀长度等于 K 的区间。看看这个区间中的个数是否大于n/2, 满足的话这个k长度就符合。所有我们需要枚举k的大小,可以用二分查找这个临界点。#include<bits/stdc++.h>using namespace std;typedef l...原创 2018-07-24 19:14:05 · 419 阅读 · 0 评论 -
2018牛课多校第一场 I-Substring(后缀数组SA)详
传送门思路:让你从长度为n的串中找出不同构的所有子串个数,同构的意思就是有a、b、c分别对应一种映射。那么也就是说对于一个包含不止一种字符的串来说,他可以有六种同构的串。如果一个串中包含这六种同构子串,那么也就只能算一种。那问题就是在这个串的中,对于某一类子串,不一定存在几种同构体。假如我们对这个串用这六种映射派生出6种串,组成一个大串, 那么原先串出现的每一类串,必然在大串中有6种同构体。所...原创 2018-07-24 22:40:16 · 177 阅读 · 0 评论 -
UVA - 11019 Matrix Matcher (AC自动机)
传送门思路:可以对于模式矩阵的每一行构造AC自动机,然后在目标矩阵的每一行找模式矩阵的每一行。如果找到了,就在(R-r, c)位置加一,R是目标矩阵的行,r是模式矩阵的行,c是R矩阵正在匹配行的列,这样只要最后遍历一边记数矩阵, 看看哪个点是模式矩阵的行数就行了,对于模式矩阵相同的行,在插入的时候我用了vector去保存。#include<bits/stdc++.h>usi...原创 2018-08-05 11:03:12 · 136 阅读 · 0 评论 -
牛课多校F-TypingPractise(KMP或者AC自动机)
传送门思路:用KMP和AC思路是一样的。ac的思路就是跑文本串,记录下每个节点的最小值,这样会省时间,因为fail指针的存在,我们不需要管模式串,kmp的话就是每个模式串都要匹配,取最小值;#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int val[N];int nxt[500010][2...原创 2018-08-16 22:14:52 · 242 阅读 · 0 评论 -
2018南京网络赛 Skr(manacher奇偶模板+hash模板)
传送门题意:给一个只有‘1’~‘9’的串,求不同回文串代表数值的和思路:马拉车找回文串,hash标记不同,hash方法求数值#include<bits/stdc++.h>using namespace std;const int N=2e6+10;const int mo=1e9+7;typedef long long ll;typedef unsigned l...原创 2018-09-02 18:26:13 · 240 阅读 · 0 评论 -
HDU-4821-String-hash-map
title: HDU 4821 String --hash+mapdate: 2018-10-30 10:30:03categories: “算法”tag:- ACM- map- hash题意:给上限为1e5的字符串,找出有多少长度为M*L的子串,并且该子串的M个长度为L的子串各不相同。思路:开始认为子串不想同的定义是每个位置的字符不相同,感觉说的有歧义。two stri...原创 2018-11-01 15:30:38 · 204 阅读 · 0 评论 -
最小表示法-解决O(n)找循环字符串最小字典序串
https://ac.nowcoder.com/acm/contest/328/A 分为三种情况1.如果str[i+k]==str[j+k] k++。2.如果str[i+k] > str[j+k] i = i + k + 1,即最小表示不可能以str[i->i+k]开头。3.如果str[i+k] < str[j+k] j = j + k + 1,即最小表示不可能以...原创 2019-01-05 19:46:14 · 1070 阅读 · 2 评论