Multi-bit Trie 题意:将长度为n(n <= 64)的序列分成若干段,每段的数字个数不超过20,且每段的内存定义为段首的值乘以2^(段的长度);问这段序列总的内存最小为多少? 思路:区间的最值,区间DP; 枚举长度,在初始化时,将长度和20比较,小于20看成是一段,大于20时,因为不能压
分类:
其他好文 时间:
2016-03-01 23:55:19
阅读次数:
297
首先我们枚举次大值,然后确定以这个数为次大值的最大区间。 这个区间就是左边第二个比它大的数的下标+1,右边第二个比它大的数的下标-1。 难就难在找到这个区间。 我们考虑将数排序,然后从大到小将数原来的下标插入set,此时set里的值都大于等于当前插入的数。 所以利用set找到前驱的前驱,后继的后继,
分类:
其他好文 时间:
2016-02-28 12:18:48
阅读次数:
216
题意: 给出n (n<=50000) 个长度为4的字符串,问有且仅有d(1<=d<=4)处不相同的字符串有几对。 SOL: 一直对着4发呆,这么小的字符串背后有什么玄学呢= =...既不能放在TRIE上搞似乎也套不了什么东西,一直很好奇这种题目能不能用某个神奇的字符串HASH水过...然后颓了一会儿
分类:
其他好文 时间:
2016-02-27 15:10:06
阅读次数:
211
题目链接 先求每个点到根的异或和 然后就要找出两个点,使dis[a]^dis[b]最大 注意异或的性质,我们可以用trie树,沿着与当前数字每位的相反方向走 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #inclu
分类:
其他好文 时间:
2016-02-26 09:13:09
阅读次数:
210
本文辑录了《算法之美——隐匿在数据结构背后的语言》(电子工业出版社2016年出版)一书第8章后半部分至第9章之代码(P273~P320)。主要收录最小生成树的Prim算法、克鲁斯卡尔算法,以及二叉搜索树的实现。AVL树、红黑树、Trie树,正在袭来。全文目录、“45个算法”目录、“22个经典问题目录”,以及附录中的经典笔试、面试问题参考答案请见文内链接。...
分类:
编程语言 时间:
2016-02-22 16:03:58
阅读次数:
247
"本人是蒟蒻,各位看官见笑了。" 复习一下AC自动机,感觉AC自动机还总是写不好…后缀数组和KMP的题目还没有写过。Trie树的题目只写了裸题,把POJ上那道异或的题目做掉才算理解了字典树的精髓… 网络流基本上只写过裸题,写费用流,然后学习最小割,最大密度子图,有上下界的网络流…二分图真的不会,学匈
分类:
其他好文 时间:
2016-02-22 00:18:36
阅读次数:
202
// 2016_2_20_trietree.cpp : Defines the entry point for the console application.// #include <iostream>#include <string.h>using namespace std; #define
分类:
其他好文 时间:
2016-02-20 17:37:06
阅读次数:
186
思路: AC了很爽。一开始看题的时候把要求的东西给搞反了,是用字母去找相应的数字出现次数。 只要用数字构建个Trie树,然后将每次输入进来的字母字符串给转换成数字,然后search一下就可以。 其中要注意end和id的灵活运用 AC代码: #include <iostream> #include <
分类:
其他好文 时间:
2016-02-19 12:33:11
阅读次数:
106
近期在学习的时候,常常看到使用Trie树数据结构来解决这个问题。比方“ 有一个1G大小的一个文件。里面每一行是一个词。词的大小不超过16字节,内存大小限制是1M。返回频数最高的100个词。” 该怎样解决? 有一种方案就是使用Trie树加 排序实现 。 什么是Trie 树呢?也就是常说的字典树,网上对
分类:
编程语言 时间:
2016-02-17 10:55:24
阅读次数:
185
统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input 输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过
分类:
其他好文 时间:
2016-02-10 14:18:49
阅读次数:
178