字符串
文章平均质量分 55
LBJHan
经历过就是财富
展开
-
Draw Something Cheat ZOJ - 3603
Draw Something Cheat 题目链接:ZOJ - 3603题意:给出n个字符串, 找出公共的子串, 并按字典序输出;训练时忘记初始化了, 一直WA;#include <iostream>#include <a...原创 2018-04-22 16:19:51 · 185 阅读 · 0 评论 -
Blue Jeans POJ - 3080 (字符串匹配,string类)
Blue Jeans 题目链接:POJ - 3080 题意:有m个DNA序列,找出其中最长的公共序列,如果有多个,就输出字典序最小的,如果长度小于3就输出"no significant commonalities";思路:真是想复杂了,看看数据量,明显暴力就可以;如果有这么一个公共序列,那么在每个串中都存在,枚举其中一个串的每个子串,直到找到为止;string类的两个函数:s.subs...原创 2018-08-07 18:29:00 · 232 阅读 · 0 评论 -
Messenger CodeForces - 631D(KMP)
Messenger题目连接:CodeForces - 631D 题意:给出两个字符串t, s,问s在t中出现了几次;但是字符串给出的形式是分块:如下:len-c;len表示长度,c表示一个字符,是说共有len个c字符;例如:3-a 4-c 2-f 表示"aaaccccff";思路:一开始想把字符串展开,但是共有200000块,每块长度为1000000;所以最长的字符串是20000000...原创 2018-08-07 11:17:44 · 213 阅读 · 0 评论 -
Period HDU - 1358(字符串循环节)
Period题目链接:HDU - 1358 题意:给出一个字符串s,问在[0, i]区间是否有完整的循环节,若有,输出i并输出循环次数;思路:next[i]表示[0, i-1]区间,前后缀相同的子串的最大长度,那么就已出现长度为i-next[i]长度的循环节,区间长度为i,如果i%(i-next[i])==0不就表示出现完整的循环节了;#include <bits/st...原创 2018-08-05 20:44:41 · 491 阅读 · 0 评论 -
Oulipo HDU - 1686(KMP匹配,统计匹配串的个数)
Oulipo题目链接:HDU - 1686 题意:现有一个单词w,统计该单词在字符串s中出现了几次;KMP算法就是匹配字符串的,可以O(n+m)的复杂度计算出单词是否在s中出现;那么统计次数???匹配到一次就返回上一次匹配的初始位置的下一个字符重新匹配???这不是又成了O(nm)的复杂度了嘛!还是没有深入理解KMP算法;当我们匹配完一遍后,前边的[0, next[m]]就无需重新匹配了...原创 2018-08-05 20:25:39 · 327 阅读 · 0 评论 -
Password CodeForces - 126B(字符串匹配,next数组的运用)
Password题目链接:CodeForces - 126B 题意:给出一个字符串s,要求找出一个子串t,满足一下三点:1:t是s的前缀;2:t是s的后缀;3:t既不是s的前缀也不是s的后缀;????看着很懵逼?这三点前后矛盾了????前两点应该是很清楚吧,就是找一个子串t,既是前缀也是后缀,形如:acbcdac中ac既是前缀也是后缀;第三点怎么理解?现在t是前缀也...原创 2018-08-05 19:59:09 · 908 阅读 · 2 评论 -
Regular Number HDU - 5972 (字符串匹配+bitset妙用)
Regular Number 题目链接:HDU - 5972 题意:一个仅由0~9字符组成的字符串x有n个字符,i位置可选择的字符有ai种,给出一个长串s,找出x能构成的s的所有子串;思路:用对0~9每个字符建一个长度为n的bitset,若该字符在i位置可供选择,就将对应位置置为1;再用一个新的bitset与s对应;#include <bits/stdc++.h>...原创 2018-07-21 20:01:52 · 258 阅读 · 0 评论 -
Problem C HDU - 5687(字典树)
Problem C 题目链接:HDU - 5687涉及到字典树的增删查;#include <bits/stdc++.h>using namespace std;struct Trie{ int cnt; Trie* next[26]; ...原创 2018-07-15 12:27:43 · 191 阅读 · 0 评论 -
Repository HDU - 2846(字典树)
Repository 题目链接:HDU - 2846 题意:给出P个字符串,找出其子...原创 2018-07-15 11:10:32 · 204 阅读 · 0 评论 -
Balanced Sequence HDU - 6299 (字符串,括号匹配, 贪心)
Balanced Sequence 题目链接:HDU - 6299 题意:n个只包含左右括号的字符串,问如何连接这些字符串可以使得匹配到的括号最多;思路:先把没个字符串自身能匹配的括号去掉,则剩的一定有p个右括号+q个左括号组成;形如))))))((((;要想匹配到的括号最多,则尽量让每个括号都起作用了;如果只包含左括号则把他放在最前边,如果只有右括号把他放在最后边;可以看...原创 2018-07-25 09:30:46 · 298 阅读 · 0 评论 -
Advanced Fruits HDU - 1503(LCS 打印路径)
Advanced Fruits HDU - 1503题意:给出两个字符串, 要求将两个字符串合并 ,如果两个字符串有公共字符, 那么这个公共字符只输出一次, 使得合并后的字符串最短但又包...原创 2018-05-17 21:00:43 · 166 阅读 · 0 评论 -
字符串各类模板(持续更新)
KMPstring s;int nxt[100000];//计算nxt数组; //时间复杂度O(n)void cal_next(string s){ nxt[0]=-1; int k=-1, j=0, len=s.size(); while(j<len){ if(k==-1||s[k]==s[j]){ k++; ...原创 2018-05-17 20:07:34 · 909 阅读 · 0 评论 -
KMP学习篇——next数组计算及应用,KMP匹配
众所周知, KMP是个神奇的算法,不少人都会使用,但是大部分人只是只知其然不知其所以然(像今天之前的我,模板记得溜溜的,但是却不知道是怎样一步一步推导而来的),下面我就来详细探讨一下;首先学习一个算法,要首先知道该算的是什么,是用来做什么的;KMP算法,就是一个用来匹配字符串的优秀算法,由D.E.Knuth、J.H.Morris和V.R.Pratt三位大牛同时发现的,因此人们称它为克努特——莫...原创 2019-03-13 15:54:22 · 652 阅读 · 0 评论