[AcWing143] 最大异或和 [字典树] "传送门" 题意 给出N个整数,选择两个整数,使得异或和最大($0 i & 1;`可以直接取二进制数的任意一位,这样简单了许多。 查询的时候,先取出对应位的二进制数,在树中先走该二进制数的对立面,如果对立面不存在,再沿着该二进制数向下走一层。 Code ...
AcWing 835. Trie字符串统计 https://www.acwing.com/problem/content/837/ 维护一个字符串集合,支持两种操作: “I x”向集合中插入一个字符串x; “Q x”询问一个字符串在集合中出现了多少次。 共有N个操作,输入的字符串总长度不超过 105 ...
分类:
编程语言 时间:
2020-01-25 15:35:43
阅读次数:
72
题意: 找出树上异或和最大的一条路径$p$ $$ _{xor}length(p)=\oplus_{e\in_p}w(e) $$ 01字典树。同样用到了简单的异或性质 $0\oplus a = a, a\oplus a = 0$ 定义$f(u,v)$为$u$到$v$的路径异或和。那么$f(u,v) = ...
分类:
其他好文 时间:
2020-01-22 20:12:45
阅读次数:
64
"传送门" 题意: 有一个长度为 $n\ (1\leq n\leq 10^5)$的整数序列 $a_1,\cdots,a_n\ \ (0\leq a_i\leq 2^{30} 1)$,你需要找到一个非负整数 $X$ 使得 $\max(a_i\oplus X)$最小,其中 $\oplus$ 为按位异或运 ...
分类:
其他好文 时间:
2020-01-22 18:08:19
阅读次数:
69
http://poj.org/problem?id=3764 题意:求上任意两点的边权异或最大值。 解法:dfs遍历树的同时将异或值加入01字典树中,同时查询最大异或值。 这样为什么就能保证你所求的结果对应的路径是连续的呢?考虑三种情况: 1.深搜的两条路径一个包含在另一个中,这样一异或,公共的部分 ...
分类:
其他好文 时间:
2020-01-22 01:20:18
阅读次数:
107
题意: 给出一个数组$s$,求 $$ max_{i,j,k}(s_i + s_j)\oplus s_k ,i\neq j\neq k $$ 思路: 01字典树,首先还是正常插入。可以想到枚举$i$、$j$的和,再字典树跑$k$,这里涉及下标不能相同,所以可以把$i$、$j$,先删除了。在插入的时候计 ...
分类:
其他好文 时间:
2020-01-21 20:03:23
阅读次数:
71
http://acm.hdu.edu.cn/showproblem.php?pid=5536 题意:在一个数组中找出 (s[i]+s[j])^s[k] 最大的值,其中 i、j、k 各不相同。 题解:1、可直接暴力O(n3) 2、01字典树可以在数组中找到一个数与X异或和最大和其异或结果。本题中的X是 ...
分类:
其他好文 时间:
2020-01-21 18:24:35
阅读次数:
74
题意: 询问$m$次,每次给出一个正整数$k$,求数组中和他异或的最大值。 思路: 01字典树裸题,……但是我不会,特意学习一下。顺便回忆一下字典树 首先把数组中的每一个数,二进制存到字典树中,从高位开始,然后每次询问从上往下跑,尽量0走1,1走0。 注意数组的大小 , _ !!!! ...
分类:
其他好文 时间:
2020-01-21 13:31:52
阅读次数:
82
基本概念 顾名思义,字典树(也叫前缀树)就是可以像字典那样来保存一些单词的集合。 如图所示: (图片来自OIWiKi) 设根节点的标号为$0$,然后其余结点依次编号;我们用数组来存每个节点的所有子节点 更具体地,设数组$ch[MaxNode][SigmaSize]$,其中$MaxNode$表示最大可 ...
分类:
编程语言 时间:
2020-01-20 22:44:56
阅读次数:
88
int trie[SIZE][26], tot=1;//初始化,假设字符串由小写字母构成 bool ed[SIZE]; void ins(char *str) { int len=strlen(str),p=1; for(int k=0;k<len;k++) { int ch=str[k]-'a'; ...
分类:
其他好文 时间:
2020-01-18 21:36:42
阅读次数:
90