成外集训第一周总结

总的来说还是学到了很多的。确实积累了很多的经验,还有见到了很多以前没见过的技巧。难度上升一个档次还是很不一样的。

技巧总结

  • 对于有很多步骤的操作,处理起来可能比较掣肘,这时可以考虑在不影响结果的情况下改变一下操作的执行顺序,这样有些信息可能会好处理一点,也有可能发现一些性质。
  • 对于多维度的问题,可以想想办法转化一下问题,使得多维度之间相互独立。
  • 对于某些线段树题目,可以考虑一些不那么常规的维护方式(比如若满足某条件就直接执行操作,不满足的话可以往两边直接递归)。这样时间复杂度不一定是错的,可以考虑均摊次数或者势能分析,有时是可以的。
  • 对于一些较难的问题,可以先尝试解决一些简单的、类似的问题(如求在满足一定情况下的连通块数量之和,可以先考虑计算满足条件的图的数量),再尝试将做法扩展到原问题。
  • 对于一些麻烦的条件,可以考虑进行一些转化,使其更易求解。
  • 如果直接求解问题时间无法接受的话,可以考虑将问题分成一些小的子问题(如将线段分割)。
  • 对于一些构造题,若全部信息都是未知的,可以考虑先求出一个点的信息,再以此为突破口求出之前的信息。
  • 一些树上的问题(如修改操作)可以考虑使用树链剖分来维护(不一定要用线段树之类的数据结构)。有时树链剖分也能维护一些不是数据结构类型的问题。
  • 构造题常用技巧(由 CF + 考试总结出):可以先考虑一些较小的边界情况如何构造(如对于 \(n\) 构造答案,先考虑 \(n = 3\)),再以此来扩展到全局。
  • 若要构造方案使得一种状态可以到达另一种状态,如果操作可逆的话,可以考虑先找一个简单的中间态,然后将起点态和终点态转到中间态上。
  • DP 优化不仅可以优化转移,有时还可以优化状态来降低复杂度(如 DP 的值较小时可以考虑交换 DP 的某一维和 DP 值,以及可以考虑精简状态)。
  • 对于要求最优方案为给定值时,可以考虑 DP of DP。
  • 若 DP 中有一维是深度,可以考虑使用长链剖分优化。
  • 如果需要使用祖先到某个点路径上的信息,可以考虑出栈序。这样的好处是可以直接考虑在固定的序列上做问题,而且需要的祖先到点的信息是一段连续的区间。正确性显然,对于 DFN 比自己小且不是自己祖先的点,它的出栈序大于祖先和自己,不在区间内;对于 DFN 比自己大切不是自己祖先的点,虽然有可能在区间内,但是由于 DFN 较大还没有处理到,所以不影响。要注意一点就是记录出栈序时的遍历顺序与之后的遍历顺序要一致
  • 如果要求最大值,但是最大值不好求,最小值易求,那可以考虑 min-max 容斥,且可以扩展到求第 \(k\) 小 / 大 的问题。这种技巧在期望题比较常见,比如要求期望的结束时间,可以用 min-max 容斥转为求起始时间之和。
  • 曼哈顿距离难以处理的话可以考虑切比雪夫距离。

比赛总结

07/13/2025

打爆了。

T1 其实已经观察出来了正解的一大部分了,就是最优情况下每个数的取值方案不会很多,只可能是序列中任意的一个 \(a_i + kn \mid k \in [-n,n]\),但是我认为 \(k \in [-1,1]\),并没有意识到一些数可能是在其他已经修改过的数的基础上再改的。以后做题的时候还是需要注意一些细节,像这种取值范围的上下界要弄清楚。

T2 原。不是很难。

T3 没做出来主要是因为有两个串之间的包含关系,这种比较难以处理,事实上被包含的串没什么用,去掉了就可以状压了,每次考虑两个串首尾相接即可。其实之前也遇到过几次类似的问题,就是像这种线段处理时包含的情况比较复杂,但有时可以直接把这种没用的东西删了。之后要记住这种方法。

T4 状态设计的还是比较巧妙,感觉要想到的话还是有点难度。突出一个问题就是 DP 能力还是不够,以后还需多练习。

07/16/2025

T1 犯了一个大错:我认为不用容斥,就一直硬 DP,最后死活都算不出来样例。如果想到容斥的话感觉还是有机会做出来的,因为之前还是自己做出来过一些容斥 + 二项式反演。以后做题要及时转换思路,长时间做不出来就换种做法,不要以为某种方法一定(不)行。

T2 搞得有点复杂,忘了可以直接求基环树上两点距离,写了个长链剖分求 \(k\) 级祖先,所以写了有点久。以后注意能写简单点就写简单点,越复杂时间成本就越高。

T3 确实是一道难题,首先没想到可以二分答案之后计算可选的数的最大数量,其次是没想到对于要求和 \(\leq m\) 的数量,可以将 \(x \leq \frac{m}{2}\)\(x > \frac{m}{2}\) 分开考虑。最后这个抛弃整体二分、抛弃右端点限制,只考虑左端点限制的做法也是挺妙的。这道题确实让我长了不少见识,也能显示出一点就是我的数据结构能力其实还不足,以后还需不断总结做题经验,以便于用在该用的地方上。

07/19/2025

T1 通过大样例找出了解的求法,但是并不会判无解(离谱),遂乱判 \(-1\),拿了 \(85 \texttt{pts}\)。听完评讲不出所料是结论题,证明也比较巧妙。想要能够做出来这种题,不用说,肯定要通过打 CF 来总结一些做结论题的方法(经常 Div. 1/2 的前几题是结论题)。最近确实比较忙,空了还是找时间做做这种 CF 题。

T2 做的有点久,下次要注意提升一下做题速度,日常也要尽量在规定的时间内做完题,这样对提升做题效率有很大提升。

T3、T4 感觉也确实比较难,想要做出来感觉非常困难,特别是 T4,完全没想到这和凸包、斜率之类的东西有什么关系。这两道题尽量还是要补了,做这种难题还是有益于提升自己水平的。

总结

这周比赛感觉打的确实非常一般,没有任何亮点,有时还打得很差。不过题还是尽量在补,前两场比赛都补完了,最后一场还要抓紧补。这种难度较高的考试还是要注意,打的时候要认真打,能多拿点分就多拿点分,赛后也一定要注意及时的订正,想想自己离做出某道题还差多少,犯了什么错误,今后做题可以运用什么经验。下周还有一周,还是希望能够打好一点。

posted @ 2025-07-20 20:41  gevenfeng  阅读(20)  评论(0)    收藏  举报