- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 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 548
原创 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 364
原创 HDU 5536 Trie
http://acm.hdu.edu.cn/showproblem.php?pid=5536字典树求异或的经典题目。 首先这题在区域赛时好多队伍是以暴力走的(暴力是6S多),因此很多人没把它当回事……..我只能说比赛的时候能AC就是好题。首先说一下我的思路:先把你输入的每个数存入数组后再按2进制放入字典树中这时我们把他归为30位的二进制。之后暴力找任意两个在树上的数把他们在树上的节点删掉之后求出他
2016-08-25 21:38:33 376
原创 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 293
原创 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 463
原创 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 381
原创 POj 3581 看起来不像后缀数组的后缀数组
先离散化数据 离散化:当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。 思路 1:输入时反转输入,因为题目要求 2:找到最小的 i 满足 sa[i] >1 把这个后缀输出 3:翻倍剩余的字符,翻倍是因为 如 2 0 1 0 1这样的串会因为长度的问题导致字典序排序失败 4:之后对翻倍的那一段数组进行一次后缀数组
2016-08-04 21:44:20 331
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人