![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
字典树
1
kaka0010
退役ACMer/算法竞赛菜鸡
展开
-
2021HDU多校第二场 1004 I love counting 树状数组套01trie
原题链接:https://acm.hdu.edu.cn/showproblem.php?pid=6964目录题意分析Code题意有一个长度为n的序列,每个元素有一个权值c,问在[l,r]区间内,有多少种类的c满足c⨁a≤bc\bigoplus a≤bc⨁a≤b分析发现和前一场的06和10非常像,像是两题的结合体。对于统计合法c,比较经典的操作就是在字典树上跑,我们分类讨论一下b = 1, a = 0 这时c选0的话,可以直接加上左边子树的所有值,因为b已经确保大于等于a。如果c选1,接着往右走原创 2021-07-23 10:09:28 · 347 阅读 · 3 评论 -
Codeforces Round #683 (Div. 2, by Meet IT) E. Xor Tree 字典树+分治
原题链接:https://codeforces.ml/contest/1447/problem/E目录题意分析Code题意有n个点,每个点都能与别的点有一条连边,当且仅当他们的异或值最小,问最小删除几个点能使原图变成一棵树分析因为是异或最小的两个点,因此这两个点按位拆分后一定是公共前缀最多的,如果我们放在一棵字典树中,那么同一棵子树内的点更有可能连线,因此如果一棵树的两个子树内都有超过2个点,那么这两棵子树之间一定是没有边的,这样就形成了森林而不是树,因此我们不能让这种情况出现,即一个点的两棵子树原创 2021-03-22 13:52:40 · 80 阅读 · 0 评论 -
2020浙江省赛ZJCPC C.Crossword Validation
原题链接题意很长,直接看输出和输出,大概意思就是给你m个单词,每个单词都有不同的权值,问矩阵中的所有最长单词是否都在这m个单词中,如果在就累加权值,不在就输出-1。关于矩阵中单词的取法,从左到右取直到“#”停止,从上往下取直到”#“停止。解法很简单,只要根据m个单词建一棵字典树,再遍历矩阵去找,时间复杂度只要n^2。记得初始化时别memset全部的trie,只要初始化用到的即可。#include <bits/stdc++.h>using namespace std;//#def原创 2020-10-30 12:40:47 · 877 阅读 · 2 评论