考试技巧#
- 估分——时间:30’~60’(即 30 到 60 分钟)
- 从头到尾看一遍所有题目,不要写代码!忌讳开始就写代码.
- 看题意,用样例验证有没有看错,一定看样例解释!必要的时候手算样例,这很重要!
- 初步想一想,确定哪些分是能得的
- 然后对每一组部分分排一个顺序(从易到难,而非分值从大到小)
原则 1:60‘想 +30’ 写 +10‘调>10’ 想 +20’ 写 +60’ 调
降低调试代码的时间,多想少调,调试代码会打乱比赛节奏,影响心态.
原则 2:20’调<30’ 重写
必要的时候重新写代码.
- 严格执行,一定不能跳!——时间:<120’,最多 150’
- 新想法暂缓:如果在写部分分做法时,想到了正确做法或其余部分分的做法(大概率是错的),先记下来,继续把部分分做完,把其他题部分分做完,再去验证
- 错做法放弃
- 复盘——时间:30’~60’
- 查错:对拍、检查边界情况、清零情况
- 急救:只选择一个题(一般靠前)直接做
- 奖励:骗分!
分步编程#
如果有多种数据……
在 main 函数下:
int T;
cin >> T;
while(T--) solve();cpp在 solve 函数下:
- 清空
- 读取
- 计算
注意读写分离!
随机数#
srand(time(0)); rand();cpp大约二分#
为了避免二分带来的死循环,我们可以在 r-l+1=logn 的时候放弃二分,使用枚举.时间复杂度从 ,即为
大约三分也是如此
骗分策略#
- 猜规律
- 打表:使用大复杂度算法打表(挂后台),然后使用数组返回,或者将输入输出中间量输出,找规律
- 贪心:多种贪心策略并行,将所有贪心结果汇总、取最佳
贪心默认#
对于一组做出选择的贪心题,我们可以默认选择第一个,然后将之后选择的收益转换为从选择一转换到当前选择的收益.最后贪心地选择收益.例题:P14361
最小生成树性质#
一张图的最小生成树中,若把采用的边称作“优边”,未采用的点称作“劣边”,那么如果在图中增加一些边,新的图的最小生成树中,存在:“优边”可能有用,“劣边”一定没用
排序去 log#
对于多次重复的排序,可以在排序前将所有可能出现的数进行一次预排序,然后在每一次排序的时候标记有用的数.