数据结构-字典树
文章平均质量分 67
围巾的ACM
啊啊什么时候也能成为一个大牛啊
展开
-
HDU1251 统计难题 字典树裸题
HDU1251 统计难题Time Limit:2000MS Memory Limit:65535KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticeDescriptionIgnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己原创 2015-12-11 17:05:17 · 511 阅读 · 0 评论 -
UVALive 7043 International Collegiate Routing Contest(字典树)
思路:读懂题目....这很关键.... #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N=3*1e4+10; const int ma原创 2016-06-01 22:48:12 · 653 阅读 · 0 评论 -
HDU 5119 Happy Matt Friends(字典树)
思路:用字典树来统计异或和大于M的种数就行了 #include using namespace std; typedef long long LL; const int N=1100010; const int INF=0x3f3f3f3f; const int maxc=2; const int BIT=21; int cas=1,T; int n,m,k[50],kk[50],ha原创 2016-05-07 22:02:22 · 733 阅读 · 0 评论 -
CodeForces 665E Beautiful Subarrays
题意:问你有多少个区间,异或起来大于等于k 思路:显然求个前缀和之后,就等于有多少对数异或起来大于等于k了,每次暴力爬字典树就好了,当k这一位等于0的时候,我们可以直接加上另外一边1的子树大小,因为爬那边之后,我怎么爬都是大于等于k的 #include using namespace std; const int maxn = 2e7+6; struct Tri { int c原创 2016-04-23 00:03:46 · 949 阅读 · 0 评论 -
Codeforces Round #291 (Div. 2) C Watto and Mechanism
思路:直接搞个字典树就好啦 #include using namespace std; struct trie { int nxt[3], ep; trie() { memset(nxt, -1, sizeof nxt); ep = 0; } }ar[2000001]; char pp[600011]; int cnt = 0;原创 2016-05-27 19:39:53 · 514 阅读 · 0 评论 -
LA3942 Remember the Word(字典树+DP)
题意:给你一串序列,再给一个n,再输入n个字符串,问这n个字符串随意组合有多少种组合可以变成原序列 思路:令dp[i]为从i到str末尾有多少种组合,那么dp[i]=sum(dp[k+1])(k>=i,且区间[i,k]所构成的字符串是存在在原串中),由于需要大量的判断某个字符串是否是原串的前缀,所以建一颗字典树就可以啦 #include #include #include #in原创 2016-03-29 22:27:43 · 363 阅读 · 0 评论 -
poj2513 Colored Sticks(欧拉回路判断+字典树)
题意:给你多个木棍,每个木棍两段涂上颜色,两根木棍只有在相同颜色的一端才能连接,问你能不能使所有木棍都连接成一条直线路 思路:将每根木棍两端的颜色看作顶点,木棍当做边,转化为判断图中是否有欧拉路,一开始用map映射各种姿势超时,后来改用字典树存储。输入每根木棍的两段的颜色A和B,将A与B插入字典树,如果不存在A颜色,就新加入A颜色,并且给A颜色一个数字编号i,B颜色的编号是j. i和j就是图中原创 2016-02-02 13:56:30 · 338 阅读 · 0 评论 -
HDU4825 Xor Sum 字典树
题解:给你一个含有n个数的集合,有多次询问,每次找出和询问的数异或最大的值。按照二进制01建32层字典树,0为左子树,1为右子树,从高位开始每次走相反的树,如果没有相反就走相同的路代码#include<cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorit原创 2015-12-16 08:13:32 · 290 阅读 · 0 评论 -
HDU1247 Hat’s Words (字典树)
题解:输出字符串集合里面可以由集合里面任意两个元素组成的字符串,字典树保存暴力切割即可代码#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include原创 2016-01-17 13:23:21 · 372 阅读 · 0 评论 -
HDU5536 Chip Factory(字典树)
题解:给n个数字从中选择三个数字a[i],a[j],a[k],使得a[i]+a[j]异或a[k]最大建一个字典树,枚举a[i]+a[j],删除之后查找然后再插回到字典树中,往相反的方向走,没有则同方向走代码#include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; int max原创 2016-01-15 20:03:40 · 472 阅读 · 0 评论 -
POJ2001 Shortest Prefixes(字典树)
题解:查找并输出字符串在串集里面唯一确定的最短前缀代码#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <string> #include原创 2016-01-16 14:52:39 · 347 阅读 · 0 评论 -
POJ3630 Phone List(字典树)
题解:字典树判断该字符串是不是串集里某个字符串前缀代码#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <string> #include原创 2016-01-16 15:49:06 · 719 阅读 · 0 评论 -
Codeforces Round #367 (Div. 2) D Vasiliy's Multiset(字典树)
思路:三个操作,增加删除和查找异或最大的,和去年长春区域赛的一道字典树基本一样... #include using namespace std; const int maxn = 3*1e6+7; struct Tree { int Next[maxn][2]; int val[maxn]; int L,root; void init() { L=0; root = n原创 2016-08-12 15:52:47 · 515 阅读 · 0 评论