NOIP 2024 训练赛 20 总结
NOIP 2024 训练赛 20 总结
| # | 用户 | 总分数 | A 29 / 35 (84.00) | B 19 / 31 (69.35) | C 12 / 33 (64.24) | D 1 / 13 (43.08) |
|---|---|---|---|---|---|---|
| 18 | Zhang_Jiahao | 240 | 100 0:59 | 0 / 100 1:32 | 100 4:06 | 40 / 100 3:03 |
A 菜园
知识点
差分。
B 逻辑表达式
知识点
DP,输入。
反思
- 输入问题:以后对于输入尽量找到更有限的结束条件,以免进入死循环。
C 三元组
知识点
线段树,字符串,Hash。
分析
枚举 \(j\),找能把它当成平均数的 \(i,k\),它们会形成数对,就变成了可变区间 Hash,分别正序的和倒序的来一遍比较即可。
反思
- 套路遗忘:想到了前面的所有,包括线段树,但是没想到 Hash 比较,最后也只能口胡计数水过去了。
D 超命运树
知识点
笛卡尔树,DP。
分析
建出笛卡尔树(小根堆),\(\operatorname{Set}(S)\) 就是集合在笛卡尔树上虚树的非叶结点数;\(f(S)\) 就是要求集合中的结点在虚树上不能同时有左儿子和右儿子,因为 \(\exists i \in S, \operatorname{len}(S) = \operatorname{len}(S \setminus \{ i \}) + 1\),我们发现,这其实就是要求 \(\operatorname{len}(S) = |S| - 1\),而如果有某一个 \(S\) 中的结点在虚树上同时有左右儿子,那么两边的最小值都会缩到这个节点上, \(\operatorname{len}(S)\) 就不可能达到 \(|S| - 1\)。
统计 \(\operatorname{dis}(S)\) 不好直接从 \(S\) 的角度来统计,相反我们从 \(T\) 从下往上来就可以。
对于非叶子节点,有三种转移:
- 左右子树都不选,这个节点就是虚树上的叶子节点。
- 左右子树中有一侧选了,那么此时 \(u\) 对于 \(S,T\) 来说都是可选可不选的,对于 \(S\) 来说,另一侧子树还能至多再选一个点,如果选了点那么 \(u\) 必选。
- 左右子树都选了,此时 \(u\) 不能选进 \(T\),但是可以选进 \(S\)。
最后 \(T = \varnothing\) 的情况还要考虑,一共 \(n+1\) 种。
反思
- 部分分没有想到:部分分的高维前缀和没有想出来,只想到了枚举子集,痛失 \(20\%\)。
- 性质挖的不够:想到了笛卡尔树但是不知道怎么用,就是因为 \(f(S) = [\operatorname{len}(S) = |S| - 1]\) 没有推出来。
总体反思
- 输入问题:第二题直接爆零,以后尽量少写这种不确定性强的输入。
- 知识点套路遗忘:哈希判序列相同都忘了,还有高维前缀和没有想到。
- 理解不透:最后一题的式子到了后面就是死算,根本没有转化。
- 题意分析:明知道最后一题的复杂式子一定是要转化到图论上,但是还没有去转化。
- 分配时间:最后一题暴力查错好久。
- 检查:有了但还是不够全面,感觉很多细节还是没看。

浙公网安备 33010602011771号