字符串
字符串
lllllan.
盛意以江河,江河不及你
展开
-
专题整理——字符串
知识点整理字符串哈希字典树KMP题目练习HDU 4821 String——字符串哈希POJ 2406 Power Strings——字符串哈希HDU 2072 单词数——setPOJ 2001 Shortest Prefixes——简单字典树HDU 3366 Count the string——KMPPOJ 2752 Seek the Name, Seek the Fame——KMP...原创 2020-07-29 01:37:06 · 137 阅读 · 0 评论 -
KMP
KMP是单模匹配算法,即在一个长度为n的文本串中查找一个长度为m的模式串。它的复杂度是O(m+n),差不多是此类算法能达到的最优复杂度。 至于KMP是怎么实现的, 以及代码的解释,这里借一下大佬的博客,大家可以去学习一下。KMP算法最浅显理解——一看就明白这里引用例题 poj 1961题意: 输出每个字符串从1 到 i 的前缀可以由一个字串循环多少次产生,即是一个周期串,无法形成则不输出。题解: 如果前i个字符前缀的i-next[i]与长度i成倍数关系,则构成循环,而循环次数则等于i / (i原创 2020-07-28 01:26:23 · 132 阅读 · 0 评论 -
字典树
回顾一个常见的字符串匹配问题,在n个字符串中查找某个字符串。如果用暴力的方法需要逐个匹配每个字符串,其复杂度是O(nm),m是字符串的平均长度。这个操作的效率十分低。那么解决这个问题较快的办法是:字典树时间复杂度:插入和查找单词的复杂度都是O(m),其中m是待插入/查询的字符串的长度。空间复杂度:有公共前缀的单词只需要存一次公共前缀,节省了空间。基本性质:根节点不包含字符,除根节点外的每个子节点都包含一个字符。从根节点到某一个节点,路径上经过的字符连接起来为对应的字符串。每个节点的原创 2020-07-27 23:59:15 · 119 阅读 · 0 评论 -
字符串哈希
hdu 1686 题意是要判断字符串A在字符串B中的出现次数,题目很简单,看上去也很好操作。#include<iostream>#include<algorithm>#include<string>using namespace std;int n;string a, b;int main(){ scanf("%d", &n); while(n--){ int cnt = 0; cin >&原创 2020-07-26 23:38:55 · 263 阅读 · 0 评论 -
2015 长春赛H && HDU5536 Chip Factory【01字典树求异或模板】
Chip Factory题意: 给你nnn个数字,求maxi,j,k(si+sj)⨁sk,i≠j≠k\mathop{max}\limits_{i,j,k}(s_i+s_j){\bigoplus}s_k,i\not=j\not=ki,j,kmax(si+sj)⨁sk,i=j=k。题解: 01字典树是求异或最大值的利器。这里我们可以先将所有数字插入字典树中,然后枚举i,ji,ji,j,先将i,ji,ji,j对应的数字从字典树中删除,找到最大值,然后再插入回去,这样就在能O...原创 2020-11-08 18:35:53 · 98 阅读 · 0 评论 -
01字典树模板
const int maxn = 10000 + 5; //集合中的数字个数int ch[32 * maxn][2]; //节点的边信息int sz[32 * maxn]; //出现次数 ll val[32 * maxn]; //节点存储的值int cnt; //树中当前节点个数void init(){ cnt = 1; memset(ch[0], 0, sizeof ch[0]); }vo原创 2020-11-06 14:27:48 · 181 阅读 · 1 评论 -
HDU1075 What Are You Talking About——字典树、map
点这里题意: 在START 和END 之间给出一个替换列表,每行有两个单词a和b。之后又在START 和END 给出几句话,要求把每句话中,在替换列表出现过的b,都替换成a。题解: 一个字符串替换成另一个字符串,用map来做是最简单的。同时为了复习字典树,也用字典树做了一遍。过程中犯的错:每句话中取单词。后续代码中呈现的是我能想到的最简便的方法,一开始为了这个弄得非常复杂。字典树中的search 函数。我特意改成了返回string类型,方便我直接输出。但是有一种情况,比如我替换列表中出现了单原创 2020-08-21 11:26:19 · 96 阅读 · 0 评论 -
cin cout string题解报告
文章目录hdu1090简单输入输出scanf代码cin代码hdu2002格式输出printf代码cout代码poj3981字符串替换getchar解决gets解决string解决hdu1062字符串翻转string解决stack解决(作了解)hdu1090简单输入输出题意: 输出 a + b。scanf代码#include<stdio.h>int main(){ int t, a, b; scanf("%d", &t); while(t--){原创 2020-08-11 00:25:01 · 162 阅读 · 0 评论 -
POJ 3280 Cheapest Palindrome——回文串
传送门DescriptionKeeping track of all the cows can be a tricky task so Farmer John has installed a system to automate it. He has installed on each cow an electronic ID tag that the system will read as the cows pass by a scanner. Each ID tag’s contents are c原创 2020-07-29 00:24:30 · 102 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame——KMP
传送门DescriptionThe little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to their newly-born babies. They seek the name, and at the same time seek the fame. In order to escape from such bor原创 2020-07-28 00:50:03 · 102 阅读 · 0 评论 -
POJ 2001 Shortest Prefixes——简单字典树
传送门DescriptionA prefix of a string is a substring starting at the beginning of the given string. The prefixes of “carbon” are: “c”, “ca”, “car”, “carb”, “carbo”, and “carbon”. Note that the empty string is not considered a prefix in this problem, but eve原创 2020-07-28 00:36:08 · 149 阅读 · 0 评论 -
HDU 3366 Count the string——KMP
传送门Problem DescriptionIt is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can write down all the non-empty prefixes of this string. For example:s: “abab”The prefixes are: “a”, “ab”, “a原创 2020-07-28 00:26:51 · 130 阅读 · 0 评论 -
HDU 2072 单词数——set
传送门Problem Descriptionlily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。Input有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。Output每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。Sample Inputyou are my friend#Sample Outpu原创 2020-07-28 00:17:28 · 134 阅读 · 0 评论 -
POJ 2406 Power Strings——字符串哈希
传送门DescriptionGiven two strings a and b we define ab to be their concatenation. For example, if a = “abc” and b = “def” then ab = “abcdef”. If we think of concatenation as multiplication, exponentiation by a non-negative integer is defined in the normal原创 2020-07-27 00:17:18 · 152 阅读 · 0 评论 -
HDU 4821 String——字符串哈希
传送门Problem DescriptionGiven a string S and two integers L and M, we consider a substring of S as “recoverable” if and only if(i) It is of length M*L;(ii) It can be constructed by concatenating M “diversified” substrings of S, where each of these substr原创 2020-07-27 00:12:24 · 229 阅读 · 0 评论