摘要:Cause I wanna to let my English become well, I wanna to use it in my essay...if it error,,please tell me,thx."It is very important! " ---by RUJIA LIU....
阅读全文
摘要:1 /* 2 *给出中序和前序,然后构建树,之后遍历树 3 */ 4 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 11 const int maxv = 10000+51;12 int in_ord...
阅读全文
摘要:计数排序处理取决于数据范围和数据个数.时间复杂度 O(n+k) n代表数据个数,k代表数据范围。基本思想: 1.得到每个值前方有多少比它小的数; 2.再线性处理每一个数方法: 1.设置一个辅助数组c,数组大小为k,设置一个排序数组b,数组大小为n,b数组存着排好序之后的结果。 ...
阅读全文
摘要:题目坑就在坑在,输出太蛋疼!链接:http://acm.hdu.edu.cn/showproblem.php?pid=5308题意:给n个值为n的数,每个用且用一次,经过+ - * / 得到24,中间得到的结果也可以用,输出每一步所用数字的编号 + 运算符 + 所用数字的编号。n>=14时,可以发现...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896题意:给定n个小于200的串,字符范围是0~127,再给定m个10000以内串,求n在m中出现的情况,中文题。题解:这题有几个点非常坑,第一,字符范围不用0~127,第二:输入:4aaaaaaaaa...
阅读全文
摘要:相关链接:http://blog.csdn.net/niushuai666/article/details/6624672简介:RMQ有点像线段树,预处理的时间复杂度是nlogn,每次询问为O(1),所以,对于多次查找值不变的区间最大最小值具有非常高的效率。相关变量:a数组,maxsum数组代表最大...
阅读全文
摘要:对于弱渣,表示只过了两题。。。还都是水题。。。1001.题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288题意:给定一个整数n,然后l的取值是1~n,r的取值是i~n,求每个i,j范围内有多少个a[i]满足,除自己以外没有其它因子。题解:如果从区间...
阅读全文
摘要:刚学习一发AC自动机。记录一下模版。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 1000000+50; 6 struct node{ 7 int Next[26];//...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068题意:求最长回文串的长度。题解:纯模版。代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const ...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3294题意:给定一个字符和一个字符串,求转化后字符串出现的第一个最长回文(即有很多相同长度,输出第一个),并输出起始终点位置,以及转化后的回文串。题解:manacher算法求得最长回文串的长度mxx以及该...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4513题意:给定n给整数,求最长回文串,并且前缀非递减,后缀非递增。题解:套manacher模版。时间:280Ms代码如下: 1 #include 2 #include 3 #include 4 #inc...
阅读全文
摘要:题目链接:http://poj.org/problem?id=3974题意:给定一个字符串,求最长回文。题解:manacher算法模版题。代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const ...
阅读全文
摘要:manacher:可以解决最长回文问题。算法:1.首先,将字符串的每个字符左右加入#,并在s0位置加入*(如果字符串中本身含有这些,则换成未出现过的字符),此时字符串的长度为len+len+3,即加入了len+1个#和一个*; (比如:aba变成 *#a#b#a#) 2.得到一个p数组,该数组...
阅读全文
摘要:题目链接:题意:给出26个数字,代表a-z字母对应的价值,再给出一个字符串,求其切成两半总价值最大为多少,如果不是回文则价值为0.题解:利用manacher算法,求的前缀为回文或后缀为回文的每一个位置,如果一个点之前的前缀为回文,则会有p[i]-i==0 (此时p[i]-1为前缀的长度,p[i]-1...
阅读全文
摘要:题目链接:http://poj.org/problem?id=3746题意:不想多说。。。题解:看代码。时间:0Ms内存:1892KB注:打表部分转自他人。。。。代码: 1 #include 2 #include 3 #include 4 #include 5 using namespac...
阅读全文
摘要:题目链接:http://acm.fzu.edu.cn/problem.php?pid=1901题意:求某个前缀,可以使得前缀和剩下部分能够一一对应,可以是原串。题解:Next数组的应用,首先 t=Next[len] 的意义是(假设1-t意思是前面t个字符):s[1....t]=s[len-t,len...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609题意:给你n个等长含有 0 1 的字符串,字符串为环形,问一共有多少种串。题解:这题的方法是最小表示法+... 就是用最小表示法处理后,可以用很多方法解决,比如字典树、二叉树等等。楼主用的是hash...
阅读全文
摘要:最小表示法:当给定一个字符串时,求它最小表示的情况,比如:baab 最小表示情况为: aabb 即把第二位置的a变成第一个位置。最大表示法:比如 abcd 最大应为:dabc 基本概念和最小表示法相同。时间复杂度:o(n)应用:比较两个环形串是否是同一字符串、判重、判同分异构等。方法:使用两个指针(...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374题意:给出字符串,求最小表示法和最大表示法,并输出有几次出现,其实就是最小循环节的个数题解:最小表示法求解,KMP求解最小循环节 最小循环节 = len - Next[len] 个数必须整出,如不整...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2328题意:输入一个不为0的整数n,再输入n个字符串,求n个字符串的最长公共连续子序列,并保证字典序最小。题解:直接暴力枚举。Times:764msMemory:1892KB代码如下: 1 #inclu...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1238题意:给定n个字符串,求它们的最长连续子序列,值得注意的是,求的的子序列可以是反转的。题解:直接记录出最短的字符串作为匹配串,其实用第一个也应该是可以的,然后不断的缩小其长度,知道能够匹配成功,如果...
阅读全文
摘要:注:转载自百度贴吧ACM队不是为了一场比赛而存在的,为的是队员的整体提高。大学期间,ACM队队员必须要学好的课程有:lC/C++两种语言l高等数学l线性代数l数据结构l离散数学l数据库原理l操作系统原理l计算机组成原理l人工智能l编译原理l算法设计与分析除此之外,我希望你们能掌握一些其它的知识,因为...
阅读全文
摘要:1.qsort函数:原型:void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));功能:使用快速排序例程进行排序参 数:1 待排序数组首地址2 数组中待排序元素数量3 各元素的占用空间大...
阅读全文
摘要:再一次复习了并查集。。。解析什么的代码已经够详细了。。。#include#include#include#include#include#include#includeusing namespace std;#define maxn 10005000int pre[maxn],Rank[maxn];...
阅读全文
摘要:Trie 树 中文名叫字典树,可以用来存放n个单词,并且找出某个前缀的数量,或者找出某个单词的数量。其实也有其他的应用,比如统计有多少个不同的字符串等等。字典树分为一般分为两个部分,一个是创建字典树,还一个是find函数,find函数的写法随着题目要求可以灵活多变的!首先 要先定义出数据结构。1 ...
阅读全文
摘要:扩展KMP,用于求s的后缀的最长前缀。用extand数组表示第i个后缀的最长前缀的字符个数。注意几点:1.next数组是对T的 2.extand数组是对S的 3.应用:回文,重复串等代码如下: 1 #include 2 #include 3 #include 4 using...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300题意:说实话,看半天题目,愣是没看懂,百度题意才看懂,大概意思就是:第一个串串为匹配串,第i个代表字母顺序中的第i个,比如第一个是q,那么,q就代表a。第二个串是密文+明文,密文全部都有,但明文可能...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336题意:求给定字符串的前缀出现次数的总和。题解:先求得next数组,从i=1开始遍历next数组,只要其值不为0,则让计数器加1,原因:next数组每出现不为0的时候,则代表有个一个前缀重复。 ...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594题意:给两个字符串,求前面哪个字符串的前缀和后面字符串的后缀相同的最大串。题解:将两个字符串合成一个字符串,利用KMP里的next数组。next[len]即为所求。但要注意,长度必须小于两者小的那个...
阅读全文
摘要:题目链接:http://poj.org/problem?id=3080题意:1.给m个长度为60的字符串,找他们连续最长自序列 2.如果给子序列长度小于3,则不输出。 3.相同长度,输出字典序小的题解:1.暴力KMP,枚举第一个字符串的所有自序列 2.相同长度的,用strcmp函数找...
阅读全文
摘要:题目链接:http://poj.org/problem?id=2752题意:给一个字符串,判断前缀和后缀是相同的位置,把这些位置从小到大输出出来。题解:通过字符串得到next数组,然后从next[len]开始。其值就是最后一个是相同前缀后缀的位置,然后,i=next[i],就是不断的向前找,就匹配了...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358题意:大概就是说给你一个字符串,然后找出能够循环的子串,输出子串某位置以及循环节的个数。题解:用KMP算法得到next数组。然后,从i=2开始遍历,得到的i-next[i]为循环节大小。如果对于i能...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746题意:给一段字符串,求添加多少个字符,使得这个字符串至少循环两次。题解:先求的next数组,然后,len-next[len]的值为最小循环节。所以,如果len能够整出这个循环节,则已经构成了循环了,...
阅读全文
摘要:KMP里里外外学了很多遍,然后从一位大牛那里学到了比较易懂的理解方法。博客链接:http://www.matrix67.com/blog/archives/115唉~KMP算法Next数组强大无比。Next数组: 1 //next数组的求法 2 void getNext(int len) 3 { 4...
阅读全文