CodeCraft2017回顾

作者: 小华


2017年5月15日,我们从深圳安全返回南京,历时72天的CodeCraft2017华为软件精英挑战赛落下了帷幕。

我们队(龙泉炕饼铺)初赛是江山赛区第一,复赛区域第二,总决赛止步全国32强。初赛和复赛的结果都是预料之中,决赛的结果则有点意外。也许比赛就是这样,什么情况都有可能发生,你永远不知道下一秒对手会亮出什么牌。

决赛表现不理想的原因,我想是多方面的。下面列举出的几条,重要性大概按从高到低的顺序。

  1. 决赛赛题性质的突然变更。初赛和复赛的赛题研究领域都属于最优化,决赛赛题的研究领域突然变为博弈。我们队擅长的方向是最优化,研究生做的课题方向也基本属于网络最优化,博弈是我们的弱项(队里三人都不怎么懂博弈,思想比较单纯,策略类游戏也接触甚少,不怎么会玩o(╯□╰)o)。即便是再厉害的人,也总有自己擅长和不擅长的领域,赛题的突然变更,加上做题时间的紧迫,让我们措手不及,整体士气也比较低落。
  2. 复赛结束后,队长生了一场大病,不得不回家休养,直到去深圳当天才赶到与我们同去。主力队长的倒下,对我们的做题进度而言无疑是雪上加霜。
  3. 决赛赛题公布后,我用了将近一周的时间走在了错误的方向上。由于我们对赛题的认知不够透彻,继续延续了复赛的优化方向,去优化网络单纯形计算费用流的性能(费用流是比赛的底层基础设施,在初赛和复赛发挥了至关重要的作用,也是到决赛几乎唯一可以从复赛保留下来的算法)。决赛的做题时间一共就两周,在队长缺席的情况下,又花了一周在错误的方向上,结果可想而知。事实上,到了决赛,虽然费用流还是不可缺少,但是地位已经不再像初赛复赛那么重要了,最最重要的,则是博弈策略的设计。决赛的冠军队,费用流的性能远不及我们,但是他们走对了方向,在策略的设计上下了大功夫,因而能够取得出色的成绩。

针对决赛,获得的经验值总结:

  • 如果某一天不可避免地要去面对自己并不擅长的问题,就应该更加强迫自己发挥主观能动性,虽然问题可能截然不同,但是科学的分析问题的方法都是相似的,在行动之前应该仔细深入地理解问题,尽可能朝着正确的方向前进。方向错了,不但寸步难行,而且悲剧是必然的。
  • 身体永远是革命的本钱,程序员群体尤其要注意爱惜自己的身体,即便工作繁忙、压力大,也要坚持锻炼,维持健康。

遗憾

  • 要说这次比赛最大的遗憾,就是没有弥补去年的遗憾。不过两年CodeCraft决赛,虽然都没有成功,但是心境却是不同的。如果说去年我们是因为赛区实力前几的强队提前遭遇而带着一定的运气成分进入总决赛,那么今年我们则是以强势的姿态再次参加CodeCraft的,直到复赛结束,我们都还相信今年能取得不错的成绩。
  • 今年应该会是最后一年参加CodeCraft了,明年比赛的那段时间,我大概在焦头烂额地忙毕业论文吧。如果明年还能抽出空,如果明年还是最优化问题,兴许我会提供一些辅助的哈,比如用数学规划求最优解给大家设计算法提供方向:P 不得不再次感慨时间过得快,研究生期间的两届CodeCraft,带给我喜悦和苦涩相融的难忘滋味,也必将成为记忆河床中两颗无比闪亮的珠贝。
-----EOF-----

Categories: 随笔 Tags: 算法 竞赛 华为 CodeCraft