04 2013 档案
摘要:刚开始,以为统计整个字符串的有多少个循环然后输出,结果一直是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
阅读全文
摘要:zz's Mysterious PresentTime Limit: 10000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 628Accepted Submission(s): 131Problem DescriptionThere are m people in n cities, and they all want to attend the party which hold by zz. They set out at the same time, and
阅读全文
摘要:关于二分图,让人很头疼啊!归结为一句话,就是看不出来题目是二分图的问题。也许是对二分图不太熟悉吧!需要多练习!题目大意:给出n个箱子,每个箱子的参数为长,宽,高;(a,b,c);当且仅当箱子s1,s2满足a1<a2,b1<b2,c3<c3时箱子s1可以装入s2中,每个箱子只可以装入一个箱子(装入的箱子中可以装有箱子),问这n个箱子进行互装后,最少剩下几个箱子?刚开始尝尽所有知道最有解的方法,排序、动态规划什么的都用上,结果都是wa。无奈google之,发现是二分图的最小路径覆盖。【二分图的最小路径覆盖】=总的节点数n-最大匹配数。所以核心仍是求最大匹配数。View Code
阅读全文
摘要:problem link adress:http://acm.hdu.edu.cn/showproblem.php?pid=3183题目大意:给你一个整数(可能有1000位),然后你可以任意删除其中的m个数字,求删除这m个数后形成的新的数最小。不能改变数字的顺序,只能删除某数字。ps: 题目给出我们的数据是没有前导0的,如果我们得出的新数据有前导0,那么我们可以忽略。例如:得到00125 可以直接输出125.这一题彻底把我弄凌乱了,蛋疼了一下午,直接影响到接下来的比赛,这一题搞头昏脑胀的。还是做题的习惯不好,考虑的太不全面,应该向涛哥学习把问题弄清楚在开始做题;最基本的先把题目中给出的四个实例
阅读全文
摘要:problem link adress: http://acm.hdu.edu.cn/showproblem.php?pid=1181给一列单词序列,如果你能找出一个单词以‘b’开始,并且联系到一个单词以‘m’开始,就输出“Yes.”;一个单词联系到下一个单词的条件是:本单词的结尾的字符是下一个单词的第一个字符。View Code 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 struct node{ 6 char s,e; 7 }s[
阅读全文
摘要:hdu 1846Brave Game http://acm.hdu.edu.cn/showproblem.php?pid=1846今天接触了博弈论!从最经典的博弈论开始吧!一堆石子有n块,甲乙两人轮流取(1~m)块石子,规定甲先取,先取光的一方获胜(即取的最后一块石子的人获胜),甲乙都足够的聪明(甲乙都采用最优的决策策略)。给出n,m问谁可以获胜。先看一些实例:如果m=2;则n=1,n=2时,甲可直接获胜。n=3时,甲无论怎么取就会输,n=4,5时,甲都可以先取一块,然后剩下的石块数多于2,所以甲还有机会再取,而且将剩下的取光。n=6时,发现甲无论怎么取都会输。经过实例可以得到一些结论:如果n
阅读全文
摘要:题目A: 原站地址http://acm.fzu.edu.cn/problem.php?pid=1056该题以大家熟悉的扫雷游戏为背景,让我们完成已知地雷出现位置的情况下,得到各个方块中的数据。结合实例我们不难看出程序的意思让我们输出除地雷以外所有其他方格周围的八个方格上的地雷总数。实现方法:统计每个‘.’处周围的八个位置的地雷总数,然后输出即可。PS:多实例输入,结束条件为n和m都为0;需要注意的是每个实例后有一个空格。参考代码:View Code 1 #include<stdio.h> 2 #include<string.h> 3 #define N 105 4 ch
阅读全文
摘要:作者:heat_nan 快节奏的都市生活,把我们这些”暴走族“压得喘不过气来。面对精神和工作的双重压力,我们需要一个安静舒适的环境来抚慰我们繁杂的心灵。家——这个温暖的小窝,心灵的港湾,一直在我们心中有着无可替代的地位,我们爱我们的家,所以我们一直在构筑它的美。那么,物联网时代,家会变成什么样子呢?物联网“神器们“,将会把您的家园构筑成怎样的一种不可思议的呢? 下班途中,望着长长的”车龙“,你内心的焦急在烈日的烤炙下是否变得更加烦躁。这时,您会情不自禁的想起你的物联网空调,于是,你打开手机给它发了一条短信:”工作吧!要自然风,25度“。想像着家中的凉爽,你的心情也爽了起来!唉,又一...
阅读全文
摘要:在图书馆闲逛,发现了刘汝佳的这本书,听着这个名字就把书拿回来了,还没有系统的学习过数据结构,就以这本书为启蒙读物吧!以解决问题的形式来说明各种基本数据结构的使用,这样不仅了解了这些数据结构也能够运用这些数据结构解决问题。本书的题目是在uva上的选择的。没办法刚注册了账号。题目A:http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110201&format=html题目大意:给出我们一行数列元素数为n,如果满足两个连续的相邻元素的绝对值取遍所有从1到n的所有整数,那么就是一个jolly
阅读全文
摘要:Problem link adress:http://acm.hdu.edu.cn/showproblem.php?pid=1026这个题目很早就见了,只是碍于没有打印BFS路径的经验就放到了今天!下面先写一种用记录前驱路径的打印方法。本文仅描述打印路径的部分,BFS就略了。实现过程:从出口向入口进行搜索,并记录下每个位置的前一个位置信息(即把当前的位置和前一个位置联系起来),这样就穿成了一条从头到尾的路径。比如 从1搜到10,我们可以考虑从10搜到1,当搜索到9的时候,记录下9的前一个位置即10,这样依次向前直到1;然后输出的时候就可以先输出1,然后输出1的前一个标记点即2,然后输出2的前一
阅读全文
摘要:记录一下母函数的第一次:View Code 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 int c1[350],c2[350]; 6 int n; 7 int main() 8 { 9 while(cin>>n)10 {11 if(n==0) break;12 int i,j,k;13 for(i=0;i<=n;i++)14 {15 c1[i]=1;c2[i]=0...
阅读全文