重要的事情:赛前和赛中别奶 #
基于既有的比赛经验来看,奶自己和队友并不是什么好主意,这往往是毒奶。别说“肯定能拿奖”,“一定能拿国一”,“相信我,这道题必定能过”。
请不要盲目自信,一旦出现做题被卡,更容易出现心态爆炸的情况。
尽人事,听天命,保持平常心比赛就行。
比赛策略 #
建议三人看同一道题,一起讨论,一人写代码,剩下二人看代码有什么bug。
队友不着急看下一题,等队友要看下一题时再一起看。
不要出现一个人读题,其他人听解释的情况。要一起读题,才能保证准确地理解题意。当卡题时,多回读题目。
禁止一人做一题的“强队打法”,多数选手并非清华北大的水平,正常比赛做到3~5道题就差不多了,相信“慢就是快”的理念。
组队建议 #
XCPC赛事组队建议 #
找水平相当的队友,不要找水平差距太大的队友,以免出现个人作战的情况。
建议多进行线下或者线上语音交流的训练,培养默契和相互理解的能力。
训练和赛后多进行复盘总结,调整策略。
天梯赛等个人作战的组队建议 #
分一队、二队、三队等,实力从强到弱,不要搞平均主义。让一队冲刺最高奖项。
赛站选择 #
建议选择离期末时间越近的,比赛总队伍数多的,同校队伍数多的,竞赛水平不卷(如山东、河南、西部等省份)的赛站,获奖难度更低,获奖概率会更高。
比赛前和赛中要吃好,保证有能量供应。赛前可以喝点咖啡,吃点黑巧克力提提神。
不建议吃太多主食,以免血糖升高导致犯困。
比赛前一天早点休息,不要喝咖啡、奶茶等提神饮料,也不要因为睡不着或者热身做不出题而影响心态。
比赛前照顾好自己身体,不要生病。
做题思路 #
读完题目,分层次,理解样例,补充细节(文字和图)。
细节和条件是值得反复推敲的,注意一些关键词,如最多、最少、题目保证、任意、合法、方位、方向等。注意一些操作的最简化的等价性。
代码尽量简洁,不要写一堆无用的代码。不建议在之前的代码一直改,推倒重来会更好写,也更好地debug。
一般题解的代码是美观的,我们写代码要追求美观整洁,并且尽可能合并一些条件,让代码变短,方便debug。
代码的变量,函数名要符合题目的描述或定义的中英文意思,不要出现让队友不懂的变量名。
不要一直写if-else
的屎山代码,一般特判0、-1、超大数的情况(0~2个),学会去在特殊中找普遍性的规律答案,做题的思维才会清晰。特判一般放在最前面或最后面输出。
题目在有分类讨论的情况,一般不超过5种。
一些步骤建议封装成函数,方便复用,写题思路会清晰很多。
常见的思维方法: #
- (答案)枚举法:一般通过直接枚举或二分枚举答案,检查是否满足条件或条件最优。
- 规律法:通过枚举简单或特殊情况寻找普遍规律,然后验证结论。
- 大胆(极端)假设法:常常用在构造题,例如:假设全为a的答案,假设只要a和b组成答案。
- 化归法:将问题转化成熟悉、简单的问题。如把数量或映射关系转换为图,“对和错”两种元素分为0和1两类(相关知识点:拓展域并查集),先作差再处理最后加回来,考虑维护几个桶等。
- 正难则反:逆向思考问题,如把加法转换成总和减去相反的,考虑前缀变考虑后缀等。
- 分解法:将问题分解为子问题,然后合并,常常用在归并、动态规划问题。
- 性质考虑法:考虑题目中的一些性质,如单调性二分、对称性、周期性、奇偶性、区间GCD、位运算(最高/低位、异或)等。
- 贡献法:计算每个元素对最终结果的独立贡献值,通过线性累加得到全局解。在分析时,特别要考虑贡献的算法是否独立,也就是添加或删除这个元素及其贡献后,结果仍然正确。常常用在子区间统计问题。
注意事项 #
可以根据题目数据范围,猜测会用到的算法。
一般题目很少卡输入输出流,long long
等常数时间,在使用算法的复杂度合理的情况下再来优化常数。
很多题目记得要开long long
,注意答案数据范围。
数组中如无必要,不建议使用memset
,可能卡超时。
其他参考:https://zhuanlan.zhihu.com/p/11515111318