![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Trie树
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
P3294 [SCOI2016]背单词 [贪心+trie]
传送门 考虑贪心,第一个条件一定不去满足,我们要考虑如何安排顺序让答案最优 举一个栗子来看 ab xyab yab cb 很明显我们不能先取xyab和yab , 因为ab是他们的后缀 我们考虑先取ab , 其次显然取yab比xyab优 , 最后取cb 这样答案是1+(2-1) + (3-2)+4 但如果我们先取cb , 再取ab,yab,xyab 这样答案就是1+2+(3-2...原创 2018-12-22 12:09:02 · 286 阅读 · 0 评论 -
Phone List [trie树]
传送门 我们边插入边判断 , 首先要判断插入的串有没有包含其它的串 , 我们边插入边看节点有没有值就可以了 其次要判断这个串有没有被包含 , 我们插入的时候看有没有新增节点就好 #include<bits/stdc++.h> #define N 10050 using namespace std; int ch[N*15][15],val[N*15],tot,T,n; vo...原创 2018-12-22 11:05:13 · 141 阅读 · 0 评论 -
The Xor-longest Path [WOJ2290] [0/1trie]
传送门 考虑维护每个点到根的异或和 , 发现一条路径两个点的异或和就是他们到根的异或和的异或 因为lca 到根的那一段自己与自己异或 , 就变成0了 , 接着就变成找两个异或最大的点 , 0/1trie 解决 #include<bits/stdc++.h> #define N 100050 using namespace std; int first[N],next[N*2],...原创 2018-12-22 10:47:23 · 227 阅读 · 0 评论 -
异或最大 [0/1trie]
传送门 每个整数看着32位的二进制01串,将N个数从高位到低位依次插入到一个01trie中。 考虑插入第i个数,相当于在trie中进行依次检索,根据xor相同为0,不同为1的特点,贪心的每次走与Ai当前位相反的指针, 如果没有相反的节点则走相同的,这样就可以得到与Ai做XOR运算的最大Aj #include<bits/stdc++.h> #define N 100050*30...原创 2018-12-22 10:20:27 · 368 阅读 · 0 评论 -
What Are You Talking About [hdu1075] [trie 树]
传送门 按火星语建trie树 , 每个节点存一个地球语 #include<string> #include<iostream> #define N 1000050 using namespace std; struct Trie{int ch[26],flag; string s;}t[N]; int tot; void Insert(string s,string ...原创 2018-12-22 09:40:23 · 149 阅读 · 0 评论 -
外星联络[trie树]
传送门 每个点先后建trie树 , 然后先dfs "0" 儿子 , 再dfs"1" 儿子 , 这样对应字典序 如果cnt<=1 直接return , 因为后面的也都不可能>1了 #include<bits/stdc++.h> #define N 3050 using namespace std; char s[N]; int n,tot=1,t[N*N][2],cn...原创 2018-11-27 19:58:52 · 168 阅读 · 1 评论 -
秘密消息[trie树]
传送门 题意 给出a集合的0/1串,问b中的串 包涵a中的与被a中包涵的个数 把a中的建一个trie树,维护结尾的节点,路上经过的节点的cnt 查询b,就是到b路径中结尾的节点(包涵a) 和经过b结尾的节点(被包涵) #include<bits/stdc++.h> #define N 10005 #define M 500005 using namespace std; i...原创 2018-10-28 11:21:55 · 134 阅读 · 0 评论 -
Chocolate[WOJ4126][Trie树][dfs序]
样例输入 3 a#a # aczra# 样例输出 3 分析 维护两个Trie树 第一个维护第一个#前的前缀 第二个维护最后一个#后的后缀 我们发现,只要前缀包涵,后缀包涵,一定合法 什么意思... abcde # bcd abcd # abcd abcde 包涵 abcd abcd 包涵 bcd 它们是合法的 所以我们维护第一棵树上的节点对应第二棵树上的哪一个 ...原创 2018-10-20 23:48:29 · 231 阅读 · 0 评论