HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 23388 Accepted Submission(s): 5614 Pro ...
分类:
其他好文 时间:
2016-05-13 12:55:24
阅读次数:
186
Revenge of Fibonacci
Time Limit: 5000 MS
Memory Limit: 204800 K
Total Submit: 37(24 users)
Total Accepted: 18(17 users)
Rating:
Special Judge: No
Descript...
分类:
其他好文 时间:
2016-05-13 02:01:16
阅读次数:
250
关于AC自动机
AC自动机:Aho-Corasickautomation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过...
分类:
编程语言 时间:
2016-05-13 01:03:33
阅读次数:
286
分析:d[i]=sum{ d(i+len(x) } [i,L]的种类数可以正向枚举,也可以逆向枚举,Trie+dp的结合题,第一次见,其实dp的思维还是比较简单的
#include
#include
#include
#include
#include
using namespace std;
const int mod=20071027;
struct TrieNode...
分类:
其他好文 时间:
2016-05-12 23:55:43
阅读次数:
438
题目来源于:Hihocoder
时间限制:20000ms
单点时限:1000ms
内存限制:512MB
描述
前情回顾
上回说到,小Hi和小Ho接受到了河蟹先生伟大而光荣的任务:河蟹先生将要给与他们一篇从互联网上收集来的文章,和一本厚厚的河蟹词典,而他们要做的是判断这篇文章中是否存在那些属于河蟹词典中的词语。
当时,小Hi和小Ho的水平还是十分有限,他...
分类:
其他好文 时间:
2016-05-12 23:50:57
阅读次数:
333
Implement a trie with insert, search,
and startsWith methods.
Note:
You may assume that all inputs are consist of lowercase letters a-z.
在Trie树中主要有3个操作,插入、查找和删除。一般情况下Trie树中很少存在删除单独某个结点的情况,因此只...
分类:
其他好文 时间:
2016-05-12 22:07:39
阅读次数:
328
这题的题意真是难于理解
意思就是挨个放单词,放每个单词之前一定把这个单词的后缀都先放上去,每个单词的代价等于这个单词的位置减去上一个出现的这个单词的后缀的位置
第一个条件是没用的,因为如果触发这个条件一定不是最优的
然后嘛,我们把串反一下,建一颗trie,把除了根意外不是作为串的结尾的没用的点去掉,这样就变成了一颗树,问题转化为给树上每个点标号,每个点的标号大于其父亲的编号,每个点代价为他的...
分类:
其他好文 时间:
2016-05-12 17:42:40
阅读次数:
221
Hat’s Words
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 12577 Accepted Submission(s): 4481
Problem Description
A hat’s word...
分类:
其他好文 时间:
2016-05-12 17:36:49
阅读次数:
208
bzoj 4460
提供一个n^3的做法.
首先考虑原题的性质,很容易知道答案不会超过目标串的长度,于是答案可以枚举。
然后我们可以枚举第一个字符是从第几行第几列开始的,然后之后的字典树暴力匹配.(n^4)
(一共L个字典树,字典树i存的是每个串从位置i开始的后缀。)
后来我发现其实第一个字符的列数可以不用枚举,我们先求出list[i][j]表示目标串中第i行能不能从给出的木桩中从位置j...
分类:
其他好文 时间:
2016-05-12 17:25:22
阅读次数:
118
SCU - 4494
给定两个序列,问从两个序列中各取一个值的异或和最大为多少
把 A序列中的数字看成一个二进制的 01串,然后存到 Trie树里
然后将 B序列的数字同样看成一个 01串,然后在 Trie树上从高位到低位贪心地查找
如果B序列中查找的 01串当前位为 0,则找 Trie树上为 1的子儿子
否则就只能走为 0的右儿子,反之亦然,然后往下走
时间复杂度 O(N)#inclu...
分类:
其他好文 时间:
2016-05-12 15:52:15
阅读次数:
224