$100 + 100 + 20 + 32 = 252 = $ 考试策略仍有问题
和 CSPS 对比,NOIP 最大的提升并不是实力,而是心态;在 CSPS 因为做完 T1 + T2 只剩下 $2 \text{h}$ 心态爆炸,而面对同样剩下 $2\text{h}$ 的 NOIP 我的心态并没有爆炸,并没有做出严重的失误,唯一美中不足之处便是时间分配稍微不合理,如果分配给 T3 时间稍微多一点可能还能够获得 $20 \text{pts}$,当然造成这一因素的原因还有对计数基础的缺陷,不能够快速的反应出 $k = 1$ 的解法;这场考试的策略是 T1 + T2 磕,T3 + T4 一起看哪个得分多耗时少先写哪一个,以下是对于每个题详细的分析。
T1 是对贪心和代码能力的考察,有一个非常好想的贪心是能匹配就匹配,但是处理这个问题需要以 $1$ 的连续段进行处理,我在赛场上的实现是边计算答案边处理 $1$ 连续段,而且误以为需要在每个连续段之间匹配,导致代码写的非常长,而且这个思路还需要注意连续段的长度,因为找这一个问题找了 $1 \text{h}$。
T2 是简单计数题,考虑两个空位之间进行一个简单容斥,问题就可以被解决,但是考场上容斥不小心容错了,有两个贡献本该使用乘法原理但是被我用成了加法原理,这个问题调了一会,导致我这道题又花费了大概 $1 \text{h}$。
T3 是一个题面超长的题依然是计数,可能在我最开始想这个题的时候没有看到特殊性质 B 导致一直在空想 $k = 1$,可能想糊涂了把乘法原理和加法原理混用在了一起,导致这个题我初始认为我一分不会,于是先去看 T,看完 T4 回来看突然想到取想特殊性质 A 和 B,特殊性质 A 是简单的,直接输出 $1$ 即可,特殊性质 B 需要利用容斥,而会了特殊性质 B 理论上约等于会了 $k = 1$ 的 $\text{24pts}$,但所剩时间不多,选择了检查。$k = 1$ 为什么要使用乘法原理?因为父节点与儿子节点是独立事件,而我在考试的时候并没有考虑这一点,因为是独立事件 $k > 1$ 的时候我们把每个节点都看成菊花来处理,而我们就只关心这个菊花的起始点可能是哪些边,把他们乘起来即可。这样做其实是有问题的,因为我们并没有考虑菊花和菊花之间会算重的情况,所以需要加上容斥 $k \le 8$ 可以这样做。其实我们并不需要枚举有哪些关键边,因为在容斥的过程中,如果一个菊花有三个节点被钦定那么贡献一定为 $0$,这说明特殊边构成了一条链,我们可以在进行树形 DP 的时候处理这件事情,可以定义 $F(i)$ 为子树 $i$ 内有一个链条端点,贡献和是多少。
T4 是套路数据结构题,没做出来说明套路见的太少了。特殊性质 B 是简单的,只需要用线段树(ST 表)暴力维护即可,对于特殊性质 A,我们不妨将询问离线,考虑找到每个值左边第一个比他大右边第一个比他,能够得到一区间 $[L, R]$, 现在如果 $[l, r] \cap [L, R] \ge k$ 就可以统计答案,这个问题是套路的,分两种情况包含和相交处理即可。那么对于原问题我们该如何处理呢,有一个没有见过的 trick,对于区间 $[l, r]$ 的 LCA 等于 $(i, i + 1) i \in [l, r – 1]$ LCA 深度的最小值,此时问题转化成了特殊性质 A。
接下来我会多做做 ARC,因为 ARC 的题目往往思维含量较高,多练其他国家的 OI 题(CEOI、COCI、JOI),锻炼部分分和时间分配的能力。