https://codeforces.com/problemset/problem/2093/G
这个题!终于看到科技树了,可持久化Tire树
某种意义上,这道题目好像是水题啊...
题意:找到数组中任意一对下标i,j max(ai ^ aj) >= k的最短区间长度
思路:
维护可持久化trie树,固定右端点,二分左端点.check就是区间最大异或查询
等等,这个题目好像其实没那么麻烦,主要是01Tire 查找>=k的区间,然后二分就好了
可持久化的主要思想是:维护历史版本
在这里01Tire就是动态插入然后就是查询了,好像跟我看到的主席树...差别蛮大的,然后注意维护端点
区间计数:每个节点存经过的次数 -> 判断查询区间的存在性(能不能走,版本r - 版本l-1)
二分>=k,新加数在树上找,和k按位比较,能走到更大的方向就走,否则就不要
代码后面补吧,真的时间不够QAQ
我的补题工程记录:
OI wiki -> 洛谷题解可持久化Tire树 -> 这个题目
(为了补可持久化的知识还碰了主席树,洛谷紫题...)
P4735可持久化典题
P455101Tire典题
导航:
https://www.cnblogs.com/zinthos/p/3899565.html
今天就先到这里
最近几天学校又有好多事,每次学个新算法又要查阅好多资料对比思考很久才能想明白QAQ