第一轮学习总结
时间
2026/5/17~2026/5/18
https://www.luogu.com.cn/training/1014078
主要知识点
完成了 \(5\) 道题目的练习。主要包括:
- 构造题(P16357)
- 交互,通信题(P16457)
- 数据结构(P16446)
- 基础算法(P15543)
- 基础算法以及计数分析(P12967)
题目分析
交互-P16457
本次套题中最简单的一道题。
观察一下样例以及首位数字的特征,不难猜到我们需要一位一位确定这个数。
首先我们先一次询问确定第一位。
然后我们考虑第二位。不难猜到我们可以通过一个乘法数字 \(base\) 分离出 \(\{0,1,2,3,4\}\) 和 \(\{5,6,7,8,9\}\)。这样子二分次数是 \(\lceil \log_2(10) \rceil=4\),总二分次数 \(4 \times 7 +1=29\)。
考虑省掉一次。想到其实每次只分离一位是很浪费的,如果能分离两半就会快很多,压缩进 \(28\) 次。简单打表发现是可以这样压缩的,那么至此做完,次数 \(28\) 次。然后考虑如何分类。
压缩的那一次特殊处理即可,剩下的次数不难发现我们假设有一个实数使得位数比较小的乘法没有到达 \(1xxxx\) 而大的到达了就可以分类了,这启发我们实数二分。(不过要注意精度问题)然后最高位原本就是 \(1\) 开头特殊处理,容易发现 \(1\) 开头很好分类。然后就做完了。
数据结构-P16446
本次套题第二简单的题目。但是我的数据结构貌似不是很好。
数据结构题先要关注数据的特性。只要仔细观察就会发现 \(a,b\) 数组始终保持非降。然后再进一步观察,就会发现,\(a_i,b_i\) 逐渐靠近直到第一次翻转后一直互相远离。
再观察,就发现如果没有绝对值使用珂朵莉树(ODT)技巧可以很轻松的维护。将同值的分段,然后每次操作时回收再计算变化量即可。问题是,绝对值会导致不知道是谁减谁。
但是翻转只有一次,翻转前怎么计算和翻转后怎么计算是确定的。这启发我们对于翻转的那一次暴力操作,具体来说(以操作 \(a\) 举例,操作 \(b\) 同理):
- 考虑每一个 ODT 元素,向下降低是否有超过 \(b\)。情况只有三种。
- 如果没有超过,直接更新答案即可,实际上是一个区间减法。
- 如果完全超过,这个暴力重新算即可。
- 如果没有完全超过,但是有超过的部分。根据性质,显然可以分成前面的情况做。
再搭配个线段树即可。复杂度 \(O((n + q) \log n)\)。
基础算法-P15543
首先先考虑一下如果没有备用宝石的情况。不难总结出过程就是每次将最大前面的放入侧线,然后把最大的推出去,然后再移动回来,然后一直重复这个情况。也就是一个点的贡献是右边比他小的数量。
好了我们现在开始讨论有宝石的情况。一种很好的想法是二分侧线长度 \(d\)。然后讨论最少需要的宝石数量。考虑一个会产生哪些约束:
- 原本非 \(0\) 的点:假设原本答案为 \(d+x\),(\(x > 0\))那么意味着右边至少有 \(x\) 个不低于该宝石个数 \(a_i\)。
- 原本为 \(0\) 的点。这里有一个小性质,就是 \(0\) 个数放的值最优情况一定是从左往右递增的。假设不递增,交换后可以获得更好的解。所以约束就是前面所有原本非 \(0\) 位小于该点新的宝石数不能超过 \(d+1\),也即最多是第 \(d+1\) 小。
考虑怎么处理这两个性质。由于递增,那么“\(x\) 个不低于”一定是右边后缀的 \(x\) 个,直接放置约束然后扫一遍就发现至少多少个宝石。然后看一下能不能满足第二个性质,看一下会不会超过总和即可。复杂度 \(O(n \log^2 n)\)。
基础算法-P12967
首先一个很明显的性质就是初始树只可能出现在原树的某个子树里。并且所有可能的子树显然不交,所以大小为 \(M\) 的个数不超过 \(\lfloor \dfrac{N}{M} \rfloor\)。所以乘积不超过 \(N\)。
然后考虑枚举。判断是否存在明显可以使用树 Hash,总时间也是不超过 \(O(N)\)。然后考虑如何快速找到答案。将原树按照树 Hash 值划分成若干个等价类,将枚举的树也划分成若干个等价类。
然后我们考虑优先覆盖根节点,然后等价类中还可以覆盖第二层,第三层,...,直到用完为止。但是我们需要跳过已经使用的,这个可以用一个线段树区间标记处理掉。然后二分跳即可,视实现 \(O(N \log^2 N)\) 或者 \(O(N \log N)\)。
构造-P16357
构造题,容易观察到偶数的全部放周围即可,而剩余奇数如果有偶数种一定无解,所以讨论有奇数种的情况。
判掉有 \(>1\) 个奇数的非法情况,都可以规约到一个 \(1\) 若干个 \(3\) 的情况。自己写的时候已经猜到了这一步,后面大概率就是构造/打表找一组合法解即可通过。首先 \(1\) 显然放中间。
然后在打表这一步挂掉了。显然需要使用电脑打表,然后我原本想的方式是注意到按照中间分类两个之和等于第三个,完全没注意到和是一定的。然后简单构造即可。
彩蛋
P16458
无法做出,成功获得本次套题 MVP。

浙公网安备 33010602011771号