跳过正文

尽人事,听天命——XCPC比赛经验总结

·1600 字·4 分钟

重要的事情:赛前和赛中别奶
#

基于既有的比赛经验来看,奶自己和队友并不是什么好主意,这往往是毒奶。别说“肯定能拿奖”,“一定能拿国一”,“相信我,这道题必定能过”。

请不要盲目自信,一旦出现做题被卡,更容易出现心态爆炸的情况。

24届lhy师兄如是说

尽人事,听天命,保持平常心比赛就行。

比赛策略
#

建议三人看同一道题,一起讨论,一人写代码,剩下二人看代码有什么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