省选集训 day 1 数据结构杂题
A
比较套路的题目,第一次见还是有难度的。
关于
考虑使用 Trie 维护这个操作,相当于建立一颗从低位开始的 Trie,然后swap儿子并进入swap后的新左子树递归操作。
然后对于邻域的问题,一般考虑每个点单独维护其儿子,然后特别处理父亲。
B
发现对于把串插入 Trie 后每个 Trie 极大空子树独立,也就是相当于若干个
那么答案就是这些空子树的 SG 值的
考虑
首先
其次考虑先手做一次可以达到一个什么样的局面:插入一个长为
那么也就是
注意到
打表发现
C
考虑 xor mex 如何求解,显然可以考虑一个
考虑到一个方法自底向上求解最优值,也就是对于 一颗满树
通过这个方法,我们可以预处理每个
这太差了,考虑到树
考虑
一共下来只会有
考虑到
首先我们断言这样的
还是考虑扫描线,每次考虑
首先将
一个
对于每个子树维护一个集合
注意我们是加入
这样均摊下来所有的
但是注意到这个兄弟子树的答案还有一些情况,也就是从这个兄弟子树往上走祖先的时候,如果祖先的兄弟也满了,那么这个答案也是会更新的,但是这是增量。
至于
需要在相应时间处理一遍。
注意到上面的复杂度有个瓶颈,就是往上走祖先找满了的祖先兄弟的增量。
这个卡满每次会有
事实上我们发现所谓的 “祖先兄弟” 仅有
同时为了处理 “兄弟子树” 的 “祖先兄弟”,我们先拿出所有祖先兄弟,然后将其按时间排序,并且用指针扫描(避免排序)处理贡献。
这样就可以做到严格的
由此我们得到了
由于答案具有单调性,我们可以在线段树上二分查找到更新的区间,那么我们需要的就是:支持区间覆盖,区间历史和求和。
线段树维护即可。
D
猜测结论是最大覆盖次数,因为这个是一个显然的下界。
事实上确实如此,只要我们能够证明这个下界可以达到。
考虑一个构造:每次将覆盖次数最大的点拿出,并拿出其中深度最小的点,这样的点一定会有其作为
使用全局平衡二叉树/树链剖分支持链修改,查全局最值即可。
E
预处理每个元素的极长有效区间
也就是询问:
也就是
F
非正解
利用 kdt 做 K 近邻搜索,注意这玩意的 估价函数设理论最优值,然后注意使用整体操作,也就是始终对 ans 进行操作(也就是并不是对于每个点找
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-12-24 根号分治入门