字符串
文章平均质量分 75
zhouzhenghuac
这个作者很懒,什么都没留下…
展开
-
string (hash版)
由于在学校,所以暂不写前面那一大堆乱七八糟的东西了,先发一下程序吧 #include #include #include #include #define mod 1000000007#define wei 31using namespace std;string S,T;long long geth(string &s){ long long ans=0; for(int i=0;i原创 2016-08-04 20:24:52 · 217 阅读 · 0 评论 -
4-25 字符串
定义:string 变量名; 赋值: string 变量名(字符串); string 变量名 (字符数量,字符);(字符数量个字符) 变量名 = 字符串; 等价于 变量名.assign("字符串"); 输入: cin>>变量名; 输出: cout 字符串的长度 length() 变量名.length(); '\0'不在长度范围内 字符串中的一个字符: s[ i ] 等价于原创 2016-08-04 20:24:15 · 321 阅读 · 0 评论 -
2016-8-6夏令营总结(kmp,回文串,扩展kmp)
今天我们用了一个上午学习了字符串中的kmp,最长回文子串和扩展kmp算法,下午在编相应的裸题。KMP算法我们有一个长度为n的字符串S,长度为m的字符串T,问T在S里出现了几次? 这题是我们平时最经常遇到的字符串问题。这题暴力搜索的话要o(nm)。(当然用hash只需要o(n))我们暴力搜索时会枚举S每一位为开头,然后比较S[i…i+m-1[与T[1…m]为匹配,之后又继续往后推一位后再次匹配。(如原创 2016-08-06 22:02:53 · 1161 阅读 · 0 评论 -
2016-8-7夏令营总结(后缀数组+RMQ)
8月7号,我们学习了字符串的后缀数组的知识。后缀数组是一种十分强大的算法,是一个把这个串的所有后缀排个序的数组。 后缀数组的代码量十分的大,可以分为几个部分:倍增算法、基数排序、求最长公共前缀与RMQ。定义首先要弄清楚,后缀数组是什么? 后缀数组就是给一个字符串的每一个后缀排个序的数组。(后缀就是一个字符串的某一位开头一直到结尾的子串)倍增算法我们先定义两个数组rank[]和sa[]。rank[原创 2016-08-11 19:38:29 · 487 阅读 · 0 评论 -
2016-8-8夏令营总结(字母树)
今天我们只学了一个十分简单的内容——字母树。 如果给出n个字符串(所有字符串总长度<=2000000),问有多少个不是其它的字符串的前缀。 这题我们硬做的话,就要o(n^2*当前字符串长度) 我们能可以用一种比较巧妙的方法,就是把这些字符串放进树里面。 我们依次将右边的字符串放进去。先看第一个:我们从root出发,在第一个字符串s[1]中搜到个a,看看这个点,原来有没有a的分支,有就搜a原创 2016-08-13 09:37:00 · 465 阅读 · 0 评论