分析: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
SCU - 4494
给定两个序列,问从两个序列中各取一个值的异或和最大为多少
把 A序列中的数字看成一个二进制的 01串,然后存到 Trie树里
然后将 B序列的数字同样看成一个 01串,然后在 Trie树上从高位到低位贪心地查找
如果B序列中查找的 01串当前位为 0,则找 Trie树上为 1的子儿子
否则就只能走为 0的右儿子,反之亦然,然后往下走
时间复杂度 O(N)#inclu...
分类:
其他好文 时间:
2016-05-12 15:52:15
阅读次数:
224
SCU - 4503板子题,依题意描述分为三个步骤
1. 求每个位置为中心的回文串,以及最大回文串
2. 求每个回文串的长度的异或前缀和
3. 求两个异或前缀和异或的最大值 (xor-Trie) 然后用快速幂算出 JD,再和 FJD比大小即可注意一下 Trie上要先插入一个 0#pragma comment(linker, "/STACK:102400000,102400000")
#i...
分类:
其他好文 时间:
2016-05-12 15:32:18
阅读次数:
147
D - Colored Sticks
Crawling in process...
Crawling failed
Time Limit:5000MS
Memory Limit:128000KB
64bit IO Format:%I64d & %I64u
Submit
Status
Practice
POJ 2513
Appoint des...
分类:
其他好文 时间:
2016-05-12 11:24:51
阅读次数:
216
18.8 Given a string s and an array of smaller strings T, design a method to search s for each small string in T. 参考资料: 从Trie树(字典树)谈到后缀树 CareerCup All ...
分类:
其他好文 时间:
2016-05-09 06:54:27
阅读次数:
119
4523: [Cqoi2016]路由表 Description 路由表查找是路由器在转发IP报文时的重要环节。通常路由表中的表项由目的地址、掩码、下一跳(Next Hop)地址和其他辅助信息组成。例如: 当路由器收到一个IP报文时,会将报文中的目的IP地址与路由表中的表项逐条进行比较,选择匹配且最明 ...
分类:
其他好文 时间:
2016-05-07 12:47:09
阅读次数:
214
public class Trie{
private Node root;
public Trie(){
root = new Node(' ');
}
public void insert(String word){
if(search(word) == true) return;
Node curr...
分类:
编程语言 时间:
2016-05-07 10:31:14
阅读次数:
168