题意:
给n,m,k ,再给出m个单词
问长度为n的字符串,至少在m个单词中含有k个的组成方案有多少种。
思路:
由于m最大是10,所以可以采取状压的思想
首先建立trie图,在每个单词的结束节点标记一个mark=(1
然后需要注意的,对于每个节点,应该顺着fail指针遍历一遍,
把所有的mark取一个并集。
因为就是如果单词出现包含的话,比如 she和he 我拿了she,其实等于...
分类:
其他好文 时间:
2014-10-15 15:00:00
阅读次数:
176
什么是trie树?
◇ trie树是一种用于快速检索的多叉树结构。
◇ 和二叉查找树不同,在trie树中,每个结点上并非存储一个元素。
◇ trie树把要查找的关键词看作一个字符序列。并根据构成关键词字符的先后顺序构造用于检索的树结构。
◇在trie树上进行检索类似于查阅英语词典。
一棵m度的trie树或者为空,或者由m棵m度的trie树构成。
例如,电子英文词典,为了方便用户快...
分类:
其他好文 时间:
2014-10-14 22:44:29
阅读次数:
281
题意:
给n个字母,和m次数。
然后输入n个字母出现的概率
然后再给一个目标串str
然后问m次中敲出目标串的概率是多少。
思路:
AC自动机+概率dp的简单题。
首先建立trie图,然后就是状态转移了
dp版本:
dp三重循环变量次数,节点数,和字母数
代码:
#include"cstdlib"
#include"cstdio"
#include"cstring"
#in...
分类:
其他好文 时间:
2014-10-14 16:18:08
阅读次数:
252
题目大意:给定一个序列,提供下列操作:
1.在数组结尾插入一个数
2.给定l,r,x,求一个l
首先我们可以维护前缀和 然后就是使x^sum[n]^sum[p-1]最大
x^sum[n]为定值,于是用Trie树贪心即可
考虑到l-1
每个区间[l,r]的Trie树为tree[r]-tree[l-1]
注意0要插入一个数字0,所以把-1作为空节点,然后把数组向前推进一位即可
#inc...
分类:
其他好文 时间:
2014-10-14 11:13:48
阅读次数:
206
给你最多10w个单词和对应的频率 接下来最多1w5千次询问 每次输入一个字符串让你从前面的单词中按照频率从大到小输出最多10个以该字符串为前缀的单词
开始把单词建成了字典树 然后每次询问找到所有满足条件的单词 在排序输出 不是超时就是超内存 还来了一发数组越界
最后换方法 因为最多只要输出前10个 那么可以把要询问的字符串建字典树 每个结尾节点在做一个映射 存10个单词(当然只是存下标)
然...
分类:
其他好文 时间:
2014-10-13 22:49:27
阅读次数:
203
题意:给你一堆字符串,问是否满足对于任意两个字符串a、b,a不是b的前缀trie入门题,只用到了insert和query操作 1 #include 2 #include 3 #include 4 using namespace std; 5 #define maxnode 1000 6 #de...
分类:
其他好文 时间:
2014-10-13 18:02:27
阅读次数:
241
Hierarchical Notation
Time Limit: 2 Seconds Memory Limit: 131072 KB
In Marjar University, students in College of Computer Science will learn EON (Edward Object Notation), which is a hierarc...
分类:
其他好文 时间:
2014-10-13 11:31:39
阅读次数:
162
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 18759 Accepted Submission(s): 8289
Problem Description
Ignatius最近遇到一个难题,老师交给他很...
分类:
其他好文 时间:
2014-10-11 21:29:56
阅读次数:
174
TIANKENG’s restaurant(Ⅱ)Time Limit: 16000/8000 MS (Java/Others)Memory Limit: 130107/65536 K (Java/Others)Total Submission(s): 456Accepted Submission(s...
分类:
其他好文 时间:
2014-10-11 17:05:45
阅读次数:
241
题目大意:给定n个数,求这n个数两两异或的值中的前k小
首先我们对所有数字建立二进制Trie树,可以利用Trie树上的size域查询出一个数与其它数异或值的第k小
然后我们维护一个堆,将所有数与其它异或值的第2小加入堆(第一小是自己异或自己,不在题目要求范围内),当取出一个数异或值的第k小后,将第k+1小加入堆
一个异或值会被两个数分别取出一次,所以取出奇数次时输出,取2*k次即可
时间复...
分类:
其他好文 时间:
2014-10-11 15:27:51
阅读次数:
190