题解:首先知道一点trie不仅可以求与某个数异或的最大值.最小值,还能求第k大值,不能再神,orz!!!多添加一个size域即可。然后本题做法类似于超级钢琴。我们先求出每个a[i]的第二异或最小值,然后放进堆里(第一是和自己)然后我们往外取最小值,每次取出一个之后a[i]的第k小异或值就压入a[i]...
分类:
其他好文 时间:
2014-12-20 22:04:02
阅读次数:
261
题解:在树上i到j的异或和可以直接转化为i到根的异或和^j到根的异或和。所以我们把每个点到根的异或和处理出来放到trie里面,再把每个点放进去跑一遍即可。代码: 1 #include 2 3 #include 4 5 #include 6 7 #include 8 9 #i...
分类:
其他好文 时间:
2014-12-19 14:11:36
阅读次数:
266
#include
#include
#include
#include
#define MAX_LETTERS 27
#define MAX_CHAR 30//字符串的长度
typedef enum {data,pointer}node_type;
typedef struct trie_node *trie_pointer;
struct trie_node...
分类:
其他好文 时间:
2014-12-12 19:14:17
阅读次数:
171
好多天没写leetcode了,就是卡在这题上,然后各种偷懒。。。。之前思路一直没理顺,想了两个晚上,就放弃了,后来就去看答案去了。。。可是答案没有注释,有点看不太懂,后来只好上网查了,有的说用到trie树,就去看了trie树是啥。。。反正那段时间状态不好,总不想看,偶尔还被跑男吸引注意力,总之各种偷...
分类:
其他好文 时间:
2014-12-11 23:44:09
阅读次数:
218
题意 中文
最基础的字典树应用噢噢噢噢
#include
#include
using namespace std;
struct trie
{
trie *chi[26];
int num;
trie()
{
num = 0;
for(int i = 0; i < 26; ++i)
chi[i] = N...
分类:
其他好文 时间:
2014-12-11 17:29:09
阅读次数:
107
Jieba分词包(三)——基于词频最大切分组合
在前面,我们已经知道dict中所有的单词和词频信息已经存在了一个trie树中,并且需要分词的句子已经构建成了一个DAG图,构建的过程也运用了dict。那么这次我们来说如何基于每句话的DAG图,找到一个组合路径,使得该组合最合理(即打分最高)?
我们直接针对Jieba分词的源代码来解释,其中已经有了很多注释:...
分类:
其他好文 时间:
2014-12-10 18:14:46
阅读次数:
379
题目大意:给出一些字符串。已知如果文章里出现过这些字符串中的一个,那么就说这个文章是可读的。问长度为l的文章有多少是可读的文章。
思路:直接处理不太好弄, 我们可以统计出来不可读的文章,然后用26^l减去就是可读的文章总数。
将所有的字串建Trie图,然后设f[i][j]为文章的第i个字符Trie图中的第j个节点的时候不可读的文章的数量。转移就很简单了。注意一下取模就行了。
...
分类:
Web程序 时间:
2014-12-08 17:57:36
阅读次数:
256
字典树struct Trie{ int ch[MAXN][26]; int cnt; Trie() { cnt=1; memset(ch[0],0,sizeof(ch[0])); } int idx(char c) { return c-'a'; } void insert(char *s...
分类:
其他好文 时间:
2014-12-06 11:21:30
阅读次数:
161
没什么难的,提示已经说得很明白了。HihoCoder目前还不支持C++11,囧..#include #include #include #include #include #include using namespace std;//struct Node{ Node(char rc) : c...
分类:
其他好文 时间:
2014-12-04 06:18:38
阅读次数:
210