比赛秘籍 (UPD-2026.10.30)
(UPD-2026.10.30):
- !!考试的时候忌不知道干什么,感觉自己啥都不会,应该去打打暴力,找找性质。
- think twice, code once.
- !!数组记得检查是否开小,有没有空超,尤其是建图双向边和数据结构的时候检查数组问题。
double掉精度见祖宗!取int时(或者保留几位小数时)应是int x = y + eps;而非直接int x = y;!同时无穷大的值要尽量赋的大。- !!当题目中一个数字很大时,可以枚举另一个值域较小的变量。
- 有些状态对于某种情况下是一样的,例如,比中位数大的可以看做同一个数;,大小关系变为1,0,-1。
- !!正难则反!时间倒流!
- 最大值最小可以优先考虑二分。
- !!记得调试用的
freopen注释掉。 - 要根据数据范围选择对应时间复杂度的算法,但也不要被诈骗了……
- 难想的题目尝试使用
dp解决,先找出题目中的所有状态,然后列出朴素状态转移方程,然后进行优化。 - 遇到题目先思考弱化的问题,然后思考如何优化这个算法。也可以观察性质分。
- 某些题目如果没有严谨的证明,不能轻易使用贪心算法,而是尝试使用
DP。 - 记得把题目转化成式子的形式考虑一下。
- 统计类问题考虑 \(ans[l \sim r] = f([1,r]) - f([1,l-1])\) 来统计答案
DP时,不一定要把所求的答案设计成数组记录的值。- 一次操作一需要考虑当前影响到的贡献。如果整体做不好做,可以尝试一个一个加入,采用“增量法”简化每一步的操作。
- 没思路了记得造数据和手玩样例。
- 序列上没有相同值的区间可以用类似于扫描线,每次新增的时候数据结构维护序列上哪些位置能成为贡献。
- \(\operatorname{mex}\{p_l,\ldots,p_r\}=\min\{\operatorname{mex}\{p_1,\ldots,p_r\},\operatorname{mex}\{p_l,\ldots,p_n\}\}\)。
- 可以考虑骗分,打部分分等等,但是别加上性质分后把原来的分数覆盖了……
- !!比赛最后要留十分钟左右检查文件夹以及文件名,文操等等。
比赛策略
-
准备充分,写好源代码 ,回忆做题策略。
-
开场 25~30min 先看题,认真读题,一定要读懂题意,注意细节,可以手玩样例辅助理解。
-
每道题判断好难度(虽然一般是排好序的,但是有时也可以按自己擅长的来)、题目思考方向。
-
规划整体布局,限定每题思考时间,明确每个时间段应该干什么。
-
完成基础分(可以快速写出的分数)后,按照权重确定部分分思考顺序。