摘要:
这一题很早很早以前就遇到了,一直一来迟迟没有动手。直到昨天为止,做了足够多的”前戏“,才敢下手。题目大意:给定一个字符串,比如 abab,找出i(1=<i<=n)个单位长度的前缀在字符串中出现的次数和。前缀 出现次数a 2ab 2aba 1abab 1所以,答案就是6;用dp[i]记录字符串中前i个字符中所包含的前缀个数。i dp[i] 包含的前缀 next[i]1 1 a 02 1 ab 03 2 a,aba 14 2 ab,abab 2通过上面的列表可以发现,前i个字符至少含有一个前缀,那就是它本身;当i=3时,为何有两个前缀?有nex数组的意义可以知道:因为n... 阅读全文
摘要:
刚开始,以为统计整个字符串的有多少个循环然后输出,结果一直是output limit excesded;原来是让计算前i个字符的循环; 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 #define N 1000006 6 char str[N]; 7 int next[N]; 8 int n; 9 void get_next()10 {11 12 int i=0,j=-1;13 next[0]=-1;14 while(i<n)15 阅读全文
摘要:
题目大意:给出你一个字符串比如abcabca,可以发现这个字符串的循环周期为3,即abc,那么还需要添加多少个字符,使得整个字符串是n倍的循环,并且n大于1;abcabca 循环周期为3,所以还需要添加2个字符;abcabc 循环周期为3,所以还需要添加0个字符;abc 循环周期为3,但是其大循环为1,所以最少还要增加个abc,即需要添加3个字符;KEY:运用KMP算法中的next数组可完美解决此问题,已经知道abcabca一共有7个字符,而且next[1-7]中的数值为分别为0 0 0 1 2 3 4;显然循环周期为T=7-4;也知道abcabcabca中next的值分别对应为0 0 0 1 阅读全文
摘要:
本题是加深对kmp中next数组的认识的好题,也可以说是体现next数组的精髓的一题。题目大意:给定一个字符串,比如“alala”,找出所有的字串满足该字串即是他的前缀又是他的后缀,输出他们的长度:其中,“alala”,满足该字符串的有a,ala,alala;即输出1 2 3即可。alala中next数组中存储的对应值分别为0 0 1 2 3;字符串的长度为5,即abala肯定满足即是自己的前缀又是自己的后缀,所以5输出,next[5]中存的值是3,next[3]中存的值是1;即输出1 3 5;刚好符合了next函数的本质。 1 #include<iostream> 2 #incl 阅读全文
摘要:
今天对KMP的认识又加深一点了,可是又不是很能用语言来表达!题目大意:给定两个字符串,比如abcd,dcab,需要把它连接起来,但是需要遵循两个条件,1 最短原则 2 长度相同的前提下字典序的优先连接原则:如果第一个字符串的后缀(长度为n)和第二个字符串的前缀(长度为n)相同,那么连接的时候可以省去相同的n个字符,本来有2n个字符;仍然以上面的两个字符串为例,有两种连法,abcdcab和dcabcd,显然第二个字符串更短,所以输出dcabcd;解决办法:两次KMP运用一次KMP可以计算出两个字符串的前缀和后缀的相同长度n;两次KMP后比较n的值即可; 1 #include<iostrea 阅读全文
摘要:
Problem DescriptionIn the new year party, everybody will get a "special present".Now it's your turn to get your special present, a lot of presents now putting on the desk, and only one of them will be yours.Each present has a card number on it, and your present's card number will b 阅读全文
摘要:
Problem Description人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长大了却不知道怎么去判断亲和串了,于是他只好又再一次来请教聪明且乐于助人的你来解决这个问题。亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 是s1的亲和串。Input本题有多组测试数据,每组数据的第一行包含输入字符串s1,第二行包含输入字符串s2,s1与s2的长度均小于100000。Output如果s2是s1的亲和串,则输出&quo 阅读全文
摘要:
Problem DescriptionGiven two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K which make a[K] = b[1], a[K + 1] = b[2], ...... , a[K + M - 1] = b[M]. If there are more than one K exist, ou 阅读全文
摘要:
题目太长自己叙述吧!原题链接地址:http://acm.hdu.edu.cn/showproblem.php?pid=1686输入:t代表测试实例第一行:模式串第二行:匹配串问模式串在匹配串中出现的次数。3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIAN上面的三个实例的输出分别为:1 3 0KMP算法看了有半天了吧!很朦胧啊!就霸王硬上弓了,套着模板A了这一题! 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 阅读全文
摘要:
Problem DescriptionI have N precious stones, and plan to use K of them to make a necklace for my mother, but she won't accept a necklace which is too heavy. Given the value and the weight of each precious stone, please help me find out the most valuable necklace my mother will accept.InputThe fi 阅读全文
摘要:
二分查找是基于分治思想的一种算法,所谓分治思想就是将一些规模很大难于直接解决的问题,缩小为一个较小的问题就很容易解决的思想,(当然它的子问题仍可以继续分解为相同的子问题)。归结为一句话就是:“以大化小,各个击破,分而治之,组合取果”。二分查找作为一种高效的查找算法,是解决一些有序序列查找的不二之选。但他的缺点也就是使用于有序的数组,有一定的局限性。但二分在一些高效的程序设计中往往被用作优化的利器。因此,熟练应用二分查找是必须的。二分查找的实现:比如有一列数从1到100,已经排好序,我们要查找25,按照传统的逐个遍历,需要查找25次,而采用二分查找的方法,首先那25和这组数列的中间的数做比较50 阅读全文
摘要:
Problem DescriptionGardon和小希每天晚上都喜欢到屋外的森林里散步,设森林里有N块空地,任意两块空地之间都有一条小径相通。他们每次从任意一块空地出发,经过所有的空地后回到原来的空地。由于他们都喜欢新鲜的旅行,所以他们不希望对任何一条小径经过两次。那么请问,他们最多能保证多少次这种新鲜的旅行呢?例如(图),当N=5时,他们只能保持两次这样新鲜的旅行。Input输入包含多组数据,每组数据占一行,是一个数字 N。(0<N<=1000000000)文件以一个0结束。Output对于每个输入的N,输出最多能保证新鲜旅行的次数。Sample Input50Sample O 阅读全文
摘要:
Problem DescriptionNow give you an string which only contains 0, 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9.You are asked to add the sign ‘+’ or ’-’ between the characters. Just like give you a string “12345”, you can work out a string “123+4-5”. Now give you an integer N, please tell me how many ways can you find t 阅读全文
摘要:
Problem DescriptionThe annual Games in frogs' kingdom started again. The most famous game is the Ironfrog Triathlon. One test in the Ironfrog Triathlon is jumping. This project requires the frog athletes to jump over the river. The width of the river is L (1<= L <= 1000000000). There are n 阅读全文
摘要:
disneyTime Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 583Accepted Submission(s): 146Problem DescriptionA new machine was introduced into disney world. Every day, there is a long queue because of its function. Everyone can input their score or updat 阅读全文