字符串
My_stage
所谓励志,其实是放不下自己骄傲的自尊
展开
-
POJ 3415 Common Substrings
http://poj.org/problem?id=3415cnt 代表节点所接受的字符在原串中出现的次数 ml 表示该状态能接受的最长的字符串长度 那么我们可以知道一个状态(设为rt)所能接受的最短的字符串长度为ml[pa[rt]]+1 设tmp为当前状态所能接受的字符串长度 那么,一个节点rt,所能接受的字符串在原字符串中所能接受的次数就是cnt[rt]*(tmp-ml[pa[rt]]+原创 2017-10-31 21:39:17 · 344 阅读 · 0 评论 -
HDU 4825 Xor Sum
http://acm.hdu.edu.cn/showproblem.php?pid=4825 字典树的经典问题—->求异或最大值题意大概是这样的,给你n个数让你存起来,之后每一次输入一个数num。(执行m次) 把num的值和之前的n个数的进行异或,要求输出能使其异或后数值最大的那个数字。因为最大不超过32位,所以我先把输入的n个数字转换为字符串,变为34位,用0补位。之后每次输入的时候也把num原创 2016-06-22 08:13:36 · 501 阅读 · 0 评论 -
HDU 1075字典树(水题)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1075就是先给你一些单词的翻译,之后再给你一句话然你翻译一下。字典树可以做,map也可以做。#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include <string>using name原创 2016-06-21 13:47:54 · 410 阅读 · 0 评论 -
HDU 1761—简单的字典树,需要释放内存
Phone ListTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 17037 Accepted Submission(s): 5737Problem Description Given a list of phone numbe原创 2016-06-20 17:18:12 · 571 阅读 · 0 评论 -
HDU 4763—Theme Section
http://acm.hdu.edu.cn/showproblem.php?pid=4763直接上KMP的代码,过后会把EX_KMP 的方法写出来之后再补上代码。#include <iostream>#include <string>#include <algorithm>#include <string.h>#define maxs 1000005using namespace std;原创 2016-06-11 23:24:40 · 339 阅读 · 0 评论 -
HDU 4333
B - Revolving Digits Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticeHDU 4333 Appoint description: Description One day Silence is interested in re原创 2016-05-10 21:53:16 · 922 阅读 · 0 评论 -
POJ 3080 Blue jeanes
传送门 :http://poj.org/problem?id=3080 Blue JeansTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticePOJ 3080 Description The Genog原创 2016-04-13 13:04:18 · 555 阅读 · 1 评论 -
POJ 2406 Power Strings
POJ 2406 G - Power Strings Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticePOJ 2406 Description Given two strings a and b we define a*b to be their原创 2016-04-13 12:54:26 · 445 阅读 · 0 评论 -
HUST 1010 The Minimum Length
KMP原创 2016-04-13 12:51:38 · 283 阅读 · 0 评论 -
HDU 1358 Period
HDU 1358 Period原创 2016-04-12 21:53:47 · 290 阅读 · 0 评论 -
POJ 2752
http://poj.org/problem?id=2752Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15797 Accepted: 8020 DescriptionThe little cat is so famous, that ma原创 2016-04-07 12:52:17 · 350 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace (非常有意义的题目)
Cyclic NacklaceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5475 Accepted Submission(s): 2472Problem Description CC always becomes very原创 2016-04-07 12:46:33 · 1435 阅读 · 0 评论 -
HDU 2846 字典树变形
RepositoryTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 4079 Accepted Submission(s): 1456Problem Description When you go shopping, you ca原创 2016-06-30 08:47:26 · 443 阅读 · 0 评论 -
HDU 4416
http://acm.hdu.edu.cn/showproblem.php?pid=4416#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#define maxn 400202#define MME(i,j) memset(i,j,sizeof(i))#include <string原创 2017-02-17 22:30:46 · 324 阅读 · 0 评论 -
SPOJ - SUBLEX
http://www.spoj.com/problems/SUBLEX/en/题意简单,思路简单,因为菜鳮所以只能慢慢学。题意: 给一个串,q次查询,每次输入一个K,输出该串第K小子串。当然所有子串是去重的。想到子串,我一开始想到的是自动机,虽然后缀数组可做此题,但我个人认为后缀数组处理子串问题较难。慢慢的,我想既然子串去重了,那么相当于后缀自动机的每一个状态啊,相同的子串在同一个状态里。 建立SA原创 2017-10-29 20:17:41 · 661 阅读 · 0 评论 -
HDU 4641 sam…………好恶心
http://acm.hdu.edu.cn/showproblem.php?pid=4641思路: 原串跑一次SAM,统计每个状态出现的次数,注意,构建的时候我们要把次数传递一下,比如我们要拆节点的时候,cnt[nq]=cnt[q] 之后我们每次添加的时候我们把答案更新,从last节点开始,每次向其父节点传递,这样我们就会得到状态出现的次数了,之后如果出现了某个状态大于k了,直接结束,说明原创 2017-09-20 14:55:36 · 450 阅读 · 0 评论 -
HDU 6194 string string string
http://acm.hdu.edu.cn/showproblem.php?pid=6194题意: 给一个字符串,和一个k,问你串中出现k次的子串有多少个。哎,我这次要背大大的锅,从多校开始好多字符串SA的题都在wa,wa,wa,昨天沈阳网选的也是一直处于懵逼状态。还是做题不够多,做题时想的不够啊。 dalao们都说sam(后缀自动机)也可以过,我还是回去补补自动机吧,之后再补一篇博客。思路:原创 2017-09-11 18:45:00 · 1365 阅读 · 0 评论 -
codeforces 842D. Vitya and Strange Lesson
http://codeforces.com/contest/842/problem/D 思路: 我把数组中的数扔进字典树里,之后我记录下每个状态出现的次数。随后我们不需要去每次都把数组异或,我们把所有查询的数异或,#include <bits/stdc++.h>#define maxs 2002020#define mme(i,j) memset(i,j,sizeof(i))#de原创 2017-08-30 20:43:38 · 580 阅读 · 0 评论 -
HDU 4436 str2int
http://acm.hdu.edu.cn/showproblem.php?pid=4436思路: 标准的后缀自动机+拓扑排序题目。 首先建立后缀自动机,每次把10这个数作为分割点,对了,每个状态节点添加2个标识,一个cnt表示这个状态的出现次数,一个sum表示出现这个状态后所得到的和为多少。我们遍历所有状态,之后找出每个状态有那些儿子存在,之后我们更新儿子的cn原创 2017-09-15 21:10:05 · 315 阅读 · 0 评论 -
BNUOJ Just a String
https://www.bnuoj.com/v3/problem_show.php?pid=52516题意中文题意,但还是很迷茫。 随后我还是看着Q苣的题解和别人的代码才理解题意。就是对所有前缀和所有后缀进行题中所给的操作。即 suf[i] pre[j] 求一下ABC串,当然了B串可以为0,那么B串不存在的时候,因为我们要找的是异或值那么即使B为0也不会改变结果。#include <bits/std原创 2017-04-26 02:50:37 · 583 阅读 · 0 评论 -
HDU 5880 AC自动机
http://acm.hdu.edu.cn/showproblem.php?pid=5880 AC自动机模板题,唯一不同的地方就是多一个长度数组,记录该状态为结尾状态时整个串的长度之后当前状态进入到终结状态时 把这一段全部改变为*即可#include <bits/stdc++.h>#define mme(i,j) memset(i,j,sizeof(i))#define maxs 220202原创 2017-05-13 21:27:51 · 326 阅读 · 0 评论 -
HDU 2896
题意:中文题意 做法:AC自动机,注意的事项在代码中#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <queue>#define maxs 128#define MME(i,j) memset(i,j,sizeof(i))using namespace std;s原创 2017-04-17 13:49:06 · 459 阅读 · 0 评论 -
HDU 2296
http://acm.hdu.edu.cn/showproblem.php?pid=2296题意: 给你若干个字符串每个字符串有自己的价值,之后要求构建出长度为n的字符串 所能形成的串的价值最大,并且保持字典序最小并把那个串输出。注: 2 7 2 love ever 5 5 对于样例,我们要构建长度为7的串,并且只有love ever有价值并且价值原创 2017-03-03 11:13:45 · 457 阅读 · 0 评论 -
POJ 2778 AC机
传送门: http://poj.org/problem?id=2778 借鉴博客: http://blog.csdn.net/morgan_xww/article/details/7834801首先,我们来分析下这题,在DNA序列ATGC的限制下,我们只能选择这四个字符为字符串。那么给你m个病毒串,说明当DNA中存在这M个串的任意一串时我原创 2017-02-11 22:16:14 · 391 阅读 · 2 评论 -
HDU 2087___kmp 字符串匹配
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2087剪花布条Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14294 Accepted Submission(s): 9044Prob原创 2016-04-07 12:38:59 · 423 阅读 · 0 评论 -
HDU 1686
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1686OulipoTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9226 Accepted Submission(s): 3718Pro原创 2016-04-07 12:35:29 · 414 阅读 · 0 评论 -
HDU 4099---字典树+大数加法
http://acm.hdu.edu.cn/showproblem.php?pid=4099题意很简单,就是让你在字典树上跑大斐波那契………只不过我们不能完全按照他题意的意思做0 0 因为据说10W位的斐波那契数有2W位0……0蛋疼…………因此我们只要把数据控制在前40位就行,但是存储的时候还是要存储前60位这样如果出现了那种奇葩的数 假设第57位和第58位相加后会导致所有位向前进一位…………0原创 2016-08-12 12:45:30 · 476 阅读 · 0 评论 -
HDU 5371 Hotaru's problem
http://acm.hdu.edu.cn/showproblem.php?pid=5371先跑一次Manacher之后开始枚举每个在Manacher中为原字符不出现的那个那个字符,之后从他回文串的另外一头开始,判断另外一个端点的回文串长度是否大于之前的那个回文串 的长度,如果是更新ans为最大的,之后继续扫描#include <stdio.h>#include <iostream>#inclu原创 2016-08-12 16:19:04 · 303 阅读 · 0 评论 -
HDU 5536 Trie
http://acm.hdu.edu.cn/showproblem.php?pid=5536字典树求异或的经典题目。 首先这题在区域赛时好多队伍是以暴力走的(暴力是6S多),因此很多人没把它当回事……..我只能说比赛的时候能AC就是好题。首先说一下我的思路:先把你输入的每个数存入数组后再按2进制放入字典树中这时我们把他归为30位的二进制。之后暴力找任意两个在树上的数把他们在树上的节点删掉之后求出他原创 2016-08-25 21:38:33 · 385 阅读 · 0 评论 -
POJ 2778 ac机+矩阵快速幂+重载运算符
http://poj.org/problem?id=2778说一下具体思路吧,题意好理解,给你几个带病毒的DNA,之后问你长为M的串有几个不带病毒给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值 这个离散数学中学过,图的矩阵表示,把图变成矩阵,节点间有边则为1,反之为0; 那么,设矩阵M,M^n后,M中M[i][j] 表示从 i–>j 走n步有几种走法;把给原创 2016-08-25 21:43:55 · 375 阅读 · 0 评论 -
HDU 2457 ac机+DP(基础DP)
http://acm.split.hdu.edu.cn/showproblem.php?pid=2457大体思路就是说 : 对给定的字符串(病毒串)构造AC机,标记每个病毒串的末尾,并在构造fail指针时 如果当前节点的失败指针是病毒串那么当前节点也作为标记。 因为 AC机的状态转移会使得当前节点转移到失败指针所指向的节点中来。 之后把给你的串(匹配串)进行DP,假设DP初始值最原创 2016-08-27 21:24:02 · 553 阅读 · 0 评论 -
HDU 2296
http://acm.split.hdu.edu.cn/showproblem.php?pid=2296题意 : 给你M个 字符串,这些字符串带有一定的价值,之后 告诉你每个 之前给你的字符串的价值,之后让你 最长为 N 的串 他的价值最大,如果价值相同输出 字符串长度最短的那个,如果长度相同,输出字典序小的那个………。思路: 参考了大神的思路–>http://blog.csdn.ne原创 2016-09-01 14:01:57 · 318 阅读 · 0 评论 -
POJ 1226
http://poj.org/problem?id=1226题意: 给你一堆串,问你这些串中出现次数最多串的长度,反向出现的也算。思路:因为问出现次数最多的串那么就要求这个串出现在每一个所给的串中,那么就是表明了需要出现N次,那么问题就简单明了了。就是N个串以及他们的反串中出现次数为K的串的最长长0度。那么我们只要 将height数组用一个数组分开就是要标记一下即可,之后二分答案,之后判断原创 2016-09-01 20:03:37 · 353 阅读 · 0 评论 -
HDU 2243
http://acm.split.hdu.edu.cn/showproblem.php?pid=2243题意: 这题跟POJ 2778大体思路一样,只不过2778是找出不含有病毒串的,而这道题是找出含有病毒串的数量,那么我们只要找到不含病毒串的数量有多少个之后再用总数相减就好。但要记得这个题用的是邻接矩阵求出不满足的条件,之后再用矩阵存储 {26,1} {0, 1} 这样的矩阵进行矩阵快原创 2016-09-01 21:15:19 · 570 阅读 · 0 评论 -
POJ 2513 字典树+一笔画问题
http://poj.org/problem?id=2513大致题意: 给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。解题思路: 可以用图论中欧拉路的知识来解这道题,首先可以把木棒两端看成节点,把木棒看成边,这样相同的颜色就是同一个节点 问题便转化为: 给定一个图,是否存在“一笔画”经过涂中每一点,以及经过每一边一次。 这样原创 2016-09-15 11:17:59 · 554 阅读 · 0 评论 -
Codeforces 615C. Running Track
http://codeforces.com/problemset/problem/615/C题意很简单,就是给你两个串 a和b,问你b能否由a组成(反向也可以),输出在a中的位置那么,我们可以理解为把b的每个子串都分别与a匹配或者与a的反串匹配。用left和right数组记录每个串的左边和右边的位置,但这里有一点就是每次匹配成功后不要改变left和right的下标,因为比如样例1 abc cba原创 2016-09-15 19:14:53 · 576 阅读 · 0 评论 -
HDU 5880
http://acm.split.hdu.edu.cn/showproblem.php?pid=5880思路: 就是先把所以需要屏蔽的串挂在AC机上跑一边,并且要记录一下该串的长度,之后定义一个函数查询,把那篇文章跑一编AC机,遇到是之前屏蔽串的末尾就把当前位比如 i+1位+=1,把【i-len+1】-1。 细节看代码#include <stdio.h>#inc原创 2016-09-21 21:50:11 · 505 阅读 · 0 评论 -
POJ 3693 Maximum repetition substring 后缀数组与区间最值的完美结合
http://poj.org/problem?id=3693题目要求完美求出重复次数最多的连续重复子串,首先我们不知道如果重复次数最多的子串的长度是多少,其次我们只有知道了长度才可以知道重复的次数和起始位置……可见首先要确定的是长度! 那么我们可以先从1开始枚举长度L,从1枚举到len/2 len代表字符串总长度。那么我们可以知道假设字符串为st 那么 st[0] st[L] st[2*L] …原创 2016-08-11 16:47:33 · 394 阅读 · 0 评论 -
POj 3581 看起来不像后缀数组的后缀数组
先离散化数据 离散化:当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。 思路 1:输入时反转输入,因为题目要求 2:找到最小的 i 满足 sa[i] >1 把这个后缀输出 3:翻倍剩余的字符,翻倍是因为 如 2 0 1 0 1这样的串会因为长度的问题导致字典序排序失败 4:之后对翻倍的那一段数组进行一次后缀数组原创 2016-08-04 21:44:20 · 341 阅读 · 0 评论 -
HDU 1711
KMP原创 2016-04-07 12:32:33 · 400 阅读 · 0 评论