专栏文章

一些炼石题单

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min79h75
此快照首次捕获于
2025/12/01 21:43
3 个月前
此快照最后确认于
2025/12/01 21:43
3 个月前
查看原文
记录一下最近关于梦熊炼石做的题。
  • CF1000F One Occurrence
维护 pre\text{pre},查询是区间 min\min,扫描线即可。
  • P10833 [COTS 2023] 下 Niz
最值分治启发式分裂,Θ(nlogn)\Theta(n \log n)
找到所有 11 的位置,讨论一个 pp 跟相邻的 11 配对的区间是否合法即可,区间合法性判断是简单随机化 Sum Hashing。复杂度 Θ(n)\Theta(n)
  • P11239「KTSC 2024 R2」跳跃游戏
写出转移式后,将序列按 modk\bmod k 分组,转移式是决策来自上一层 +ai+a_i 还是直接来自上一个位置,不难发现只有 aiai1a_i \ne a_{i - 1} 的时候该决策才有意义,然后是一段区间覆盖。这里我没想到怎么规避线段树上二分,总之线段树上二分肯定能做。对于 aia_i 段很长的情况,记录全局加了多少次即可。时间复杂度 Θ(nlogn)\Theta(n \log n)
  • P8339 [AHOI2022] 钥匙
不同颜色之间显然相互独立,将每种颜色的箱子和钥匙单独建立虚树,对于每个钥匙,dfs 就近求出能和其产生的贡献的箱子,问题转化为查询树链覆盖了多少个已知树链,转 dfn 就是矩形加单点查。
Θ(nlogn)\Theta(n \log n),不知道为什么被卡常了。
  • P4220 [WC2018] 通道
对第一棵树边分治在第二棵树上建立虚树,在第二棵虚树上枚举 LCA,然后大概是在第三棵树上找到 vv 子树内点集合的直径端点,跟 uu 前面做完的子树的直径端点合并。
对虚树归并排序,Θ(nlogn)\Theta(n \log n)
  • P5327 [ZJOI2019] 语言
现在已经变成套路题了。
不难发现我们本质上是求经过点 uusi,tis_i,\,t_i 构成的链并,经典结论,以 dfn 为下标,树上差分线段树合并维护链并大小即可。
Θ(nlogn)\Theta(n \log n)
  • [CEOI 2019] Dynamic Diameter
欧拉序动态直径板子。
具体来说我们发现 [el,er][e_l,\,e_r] 中间的深度最小值就是它们的 LCA,维护两边深度最大值减去 2×2 \times 深度最小值的最大值即可,这是线段树可维护的。
改边权是区间加,这是容易的。
Θ(nlogn)\Theta(n \log n)
  • P8860 动态图连通性
处理出 tit_i 代表 ii 边删除的时刻,我们需要求出一个最小的 tit_i 尽可能大的路径,排序 tt 后是比较字典序,其它边都可以被删,这个路径删不了。主席树做比较字典序即可。Θ(nlog2n)\Theta(n \log^2 n)
基于这个有个贪心做法,Θ(nlogn)\Theta(n \log n)
  • P5321 [BJOI2019] 送别
正常做法就是纯种大份题,不想做(建议学 A_zjzj 做法orz) 。
  • P9494「SFCOI-3」进行一个走的行
离线下来扫描线,倍增值域分块套 fhq 即可。
平衡树有交合并是什么做法。
Θ(nlog2n)\Theta(n \log^2 n)
补充题单
  • HDU7530 树上询问
Check 一条路径是简单 Xor Hashing,然后放到点分树上,以子树为信息维护最小最大值及出现次数 Check [l,r][l,\,r] 是不是在两个以下的子树内,然后就能找到对应子树,对每个子树维护平衡树查询 [l,r][l,\,r] 内离根最远的点即可。
Θ(nlog2n)\Theta(n \log^2 n)
大概率做复杂了吧。
  • HDU7505 纠缠点对
两条路径有交,当且仅当一条路径的 LCA 在另一条路径上。
离线下来把路径挂到 LCA 上,考虑枚举深度小的那个 LCA,考虑 dsu on tree,先枚举另一个 LCA 在轻子树内的情况,这可以直接暴力,做完后递归,另一个 LCA 在重子树内是简单二维数点。
Θ(nlog2n)\Theta(n \log^2 n)
塞了一堆 NOIP 原题,不放了。
  • QOJ2554 AND PLUS OR
x = i & j, y = i - (i & j), z = j - (i & j),问题转化为 ax+y+ax+z<ax+ax+y+za_{x + y} + a_{x + z} < a_x + a_{x + y + z},即 ax+yax<ax+y+zax+za_{x + y} - a_x < a_{x + y + z} - a_{x + z}。只要存在一个 zz 满足条件,则根据类似介值定理的推论,我们一定有一种方法一个个填 zz 的某一位,某一刻满足条件。注意到 yyzz 本质相同,Θ(n22n)\Theta(n^2 2^n)
  • QOJ4808 Great Party
某次正睿的 T1。
首先 n=1n = 1 先手当然必胜。
考虑 n=2n = 2,不难发现谁合并谁输,所以都不会合并。双方最后会拖到剩下两个 11 的情况,这是 ai1a_i - 1 的 nim。
然后 n=3n = 3,我们无论如何都有方法使得剩下的两个数异或和为 00
然后可以猜测奇数区间必胜,偶数 ai1a_i - 1 nim。
那么可以莫队维护,Θ(nn)\Theta(n \sqrt n)
很严谨的证明似乎没那么容易。
  • QOJ4802 Ternary Search
分开山峰和山谷,当只考虑山谷的时候,先计算一个数必须的代价。计算完后,当一个数从右边移动到左边,那么其代价是固定的(它为右端点的逆序对数),我们记录这个代价,加入一个数的时候是后缀减,取出全局为 00 的数放到左边。
Θ(nlogn)\Theta(n \log n)

评论

0 条评论,欢迎与作者交流。

正在加载评论...