procedure2012
It's not worth it to know you're not worth it!
上一页 1 2 3 4 5 6 7 8 ··· 20 下一页
摘要: [关键字]:STL中map的应用[题目大意]:因为是两道题就不一一写了,自己看吧都很水。//================================================[代码]:因为很水而且只是为了练习一下map所以没有分析直接上代码了POJ2491#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<string>#include<map>using n 阅读全文
posted @ 2012-03-29 22:14 procedure2012 阅读(170) 评论(0) 推荐(0)
摘要: [关键字]:后缀数组 字符串[题目大意]:给定n 个字符串,求出现或反转后出现在每个字符串中的最长子串。//=========================================================================[分析]:和前几道题一样的做法,先见字符串和它反转后的串连在一起并用不同的字分割(小于原串的任意字符且不相同)最后加上一个最小的字符结束,再求后缀数组,二分答案对height数组分组判定是否有至少一组后缀包含所有字串。[代码]:View Code #include<iostream>#include<cstdio>#in 阅读全文
posted @ 2012-03-29 22:10 procedure2012 阅读(343) 评论(0) 推荐(0)
摘要: [关键字]:后缀数组 字符串[题目大意]:给定n 个字符串,求在每个字符串中至少出现两次且不重叠的最长子串。//======================================================================[分析]:做法和POJ3294大同小异,也是先将n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符(且小于它们)隔开,最后加上一个最小的数求后缀数组。然后二分答案,再将后缀分组。判断的时候,要看是否有一组后缀在每个原来的字符串中至少出现两次,并且在每个原来的字符串中,后缀的起始位置的最大值与最小值之差是否不小于当前答案(判断能否做到不重 阅读全文
posted @ 2012-03-29 21:57 procedure2012 阅读(334) 评论(0) 推荐(0)
摘要: [关键字]:后缀数组 字符串[题目大意]:给定n 个字符串,求出现在不小于k 个字符串中的最长子串。//======================================================================[分析]:先将所有字符利用不同且小于所有原字符串中的字符的字符分开,但最后一个字符后面要加上一个小于所有字符的字符。然后二分答案并对height数组进行分组,判断每组后缀数否分在了k个字符串中。输出时就把分在k个字符串中的后缀组输出。[代码]:View Code #include<iostream>#include<cstdio> 阅读全文
posted @ 2012-03-29 21:37 procedure2012 阅读(1557) 评论(0) 推荐(0)
摘要: [关键字]:后缀数组 字符串[题目大意]:给定两个字符串A 和B,求最长公共子串。//==============================================================================[分析]:求两个字符串的最长公共子串实际上就是求两个字符串的两个后缀的最长公共前缀。所以把两个字符串连起来中间用一个没出现的字符(小于任何一个原字符串中的字符)连起来,最后再加上一个字符(小于任何一个字符)。然后求这个新串中的最长公共前缀,依次枚举每个i求出符合sa[i-1]在一串,sa[i]在二串的所有height的最大值。[代码]:View Code 阅读全文
posted @ 2012-03-29 18:59 procedure2012 阅读(282) 评论(0) 推荐(0)
摘要: [关键字]:后缀数组 字符串[题目大意]:求出给定字符串的最长回文串。//========================================================================[分析]:首先把字符串反转(T')接到原串(T)后边中间用‘~’分割(大于所有字符串中元素就行),最后用'$'结束(小于所有字符)。然后枚举T串中的每一个位置i找到T'中对应的位置i'假设以i为中心有一个长度为2r的回文串,那么T[i-r,i-1]=T[i+1,i+r]=T[i'+1,i'+r](画一下就明白了)。所以找以i 阅读全文
posted @ 2012-03-28 11:43 procedure2012 阅读(326) 评论(0) 推荐(0)
摘要: [关键字]:后缀数组 字符串[题目大意]:给定一个字符串,求不相同的子串的个数。//=======================================================================[分析]:如果所有的后缀按照suffix(sa[1]), suffix(sa[2]),suffix(sa[3]), ……,suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后缀suffix(sa[k]),它将产生n-sa[k]+1 个新的前缀。但是其中有height[k]个是和前面的字符串的前缀是相同的。所以suffix(sa[k])将“贡献”出n-sa 阅读全文
posted @ 2012-03-28 11:29 procedure2012 阅读(383) 评论(0) 推荐(0)
摘要: [关键字]:后缀数组 字符串[题目大意]:给定一个字符串,求至少出现k 次的最长重复子串,这k 个子串可以重叠。//==========================================================================================[分析]:先二分答案判断有没有至少出现k 次的长度为x的重复子串。因为可以重复所以只要heighe数组中有>x说明有长度为x的可重复子串,然后再根据height分组:如果height[i]<x就把i和上一组分开,这样每一组里都存在长为x的重复字串,如果有任意一组里有超过k个,说明成立。[代码 阅读全文
posted @ 2012-03-28 11:18 procedure2012 阅读(756) 评论(0) 推荐(0)
摘要: [关键字]:随机化搜索 模拟退火[题目大意]:给出n个点,找出一个距离所有点之和最小的点,输出距离。//===============================================================================[分析]:同样是随机化的方法,只是在把没个点随机移动时有小小的变动。poj1379是使用得随机一个角度x然后利用t*cos(x)和t*sin(x)来处理随机走到的位置,而这道题因为没有了边界的限制,可以用以2t为长以要移动的点位中心的正方形中随机一个移动的位置来求最优值。至于具体退火算法步骤可以看poj1379或http://www.c 阅读全文
posted @ 2012-03-28 10:42 procedure2012 阅读(963) 评论(0) 推荐(0)
摘要: [关键字]:随机化搜索 模拟退火[题目大意]:在一个给定的矩形中有一些点,找到一个点距所有点的最小距离最短。//==============================================================================[分析]:用模拟退火的方法,其实不是标准的模拟退火因为出于时间等因素考虑,并没有加入以一定概率接受稍差解,而只有退火过程。大体步骤:1、随机出NUM个点2、枚举步长,并在此步长下让每一个随机的点随即移动一定次数并记录最优值。3、退火,步长减少。[代码]:View Code #include<iostream>#incl 阅读全文
posted @ 2012-03-28 10:20 procedure2012 阅读(499) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 20 下一页