Trie
文章平均质量分 82
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
HDU 5536 Chip Factory ACM/ICPC 2015 Changchun(Trie)
人生第一道Trie…… 对于异或问题,用Trie求解最大最小值是一个常用套路。本来Trie不属于我的范畴的…… 本题求一个互不相同的i、j、k,使得最后结果(si+sj)^sk最大。暴力的方法枚举三个不同的i、j、k,据说现场赛这种O(N^3)的方法居然能过?!大力出奇迹啊…… 正解的话在模拟比赛中也想到了。一开始把所有的数字加入到Trie中,然后枚举i和j,把si和sj从Tire中删除,然后在Trie找与si+sj异或结果最大的数字,并返回结果,最后再把si原创 2017-09-08 09:19:31 · 368 阅读 · 0 评论 -
CodeForces 858D Polycarp's phone book(Trie)
大致题意,给出很多个号码,然后要你对每一个号码找出一个长度最短的识别码,即长度最短的同时,只有那一个电话包含这个识别码。 这里队友机智无比,直接想到用字典树搞。由于号码最多只有10位,所以对于每一个号码,在字典树里面分别加入第0位~最后一位,第1位~最后一位,第2位~最后一位……这样解决了字典树只能一定要从头开始的缺陷。如此一来对于一个号码的任意一个小段,我们都可以对应在字典树中找到一个从根开始的路径与之对应。那么我们要做的就是统计一直到任意小段的最后一位的节点,有多少个这样的子串包含这个小原创 2017-10-02 18:56:50 · 518 阅读 · 0 评论 -
CodeForces 888G Xor-MST(Sollin MST+Trie)
标题都已经很明显了,一个最小生成树,只不过是用xor做。 通常来说xor的题目,要么是贪心,要么是用Trie去做,而这道题,显然要用到Trie。但是我们又如何做到求最小生成树呢?这里,我们发现求最小生成树有一个非常少见的算法——Sollin(Boruvka)算法。具体来说,就是一开始把每个点看成独立的连通分量,对于每个连通分量,每次操作找与其最近的连通分量合并,一直到只剩下一个连通分量为止。这样子最坏的情况是每次只减少一半的连通分量数目,最好的情况就直接和Prim算法相同。具体实现起来,可能原创 2018-02-11 18:57:58 · 491 阅读 · 0 评论 -
计蒜客 ICPC南京网络赛 Set(字典树 + 合并 + lazy更新)
大致题意:n个集合,你要进行m个操作。总共有3种操作。第一种,合并两个集合x和y。第二张,把特定的集合里面所有的数字加一。第三种,询问在某个集合里面,对于所有数字对2的k次方取模后,有多少个数字等于x。首先,合并的话实在是有太多的方式,大部分数据结构的启发式合并包括set都可以。但是主要是第三个,所有数字对2的k次方取模,然后看结果有多少个数字等于x。仔细想想这个取模,不难发现,其实就是询问,一个集合里面,在二进制下,后k位x的数字有多少个。询问与二进制和位数有关,很容易想到用字典树。字典树的合并比较容易写原创 2018-09-07 00:14:14 · 306 阅读 · 0 评论