这篇文章纯粹是心血来潮,原因是去年上传到github的参赛代码,前几天又有两个人star和fork了。
记得star热潮还是去年4月复赛刚结束的那几天,厚着脸皮在八大赛区的群里发消息求关注,之后就陷入了无限吃灰期。结果,我的开源代码在前几天突然又被挖出来了。
看了下时间,我想大概是有同学在准备今年的比赛,尝试研究去年的题目和开源代码。说实话,即使你愿意花很长时间来准备,效果也有限。
因为看往年的题目很容易陷进去,等到真正比赛发现意义不大。另外,很少有花了很长时间研究往年题目才冲进总决赛的参赛者,99%以上的参赛者都是0准备,直接刚。
2020软件挑战赛即将到来,关于如何充分利用剩余时间备战软挑,冲进复赛圈。希望你看完这篇文章,能够找到一点方向。
关于我
-
素有“死亡赛区”之称的成渝赛区18年、19年参赛者,18年一轮游,19年初赛第4,成功苟进复赛
-
今年秋招凭借笔试绿卡免了机试,并拿到了华为无线的offer,奈何深圳研发没坑,与菊厂失之交臂,去了深圳某公仔厂
-
始终坚信:最好的成绩可能不是最牛的算法,但肯定是对赛题和业务理解最深入的算法
直面软挑
华为软挑,全称华为软件精英挑战赛,是华为公司面向全球大学生举办的大型软件竞赛。从2015年开始举办,已成功举办5届,参赛人数和影响力正在逐年扩大。
- 往年时间
- 经过几次的举办,大赛基本稳定在3月初报名,上旬发布初赛赛题同时开启练习赛
- 3月底线上初赛,次日公布复赛名单,发布复赛赛题同时开启练习赛
- 4月中旬线下复赛,次日公布决赛名单,发布决赛赛题同时开启练习赛
- 4月底在深圳举行线下全国总决赛
- 参赛要求
- 参赛对象:全日制在校大学生
- 参赛语言:C/C++/Java/Python
- 参赛形式:团队参赛,每队1-3人,可同校组队或在同一赛区内跨学校组队
- 赛程规则
- 分为区域初赛、区域复赛、全国总决赛
- 区域初赛前32名进复赛
- 区域复赛前4名进决赛
- 全国总决赛共32名队伍,决出全国8强
- 赛区机制
- 每年比赛初期采取区域赛,将全国分为八大赛区
- 京津冀东北赛区,上合赛区,杭厦赛区,江山赛区,成渝赛区,西北赛区,武长赛区,粤港澳赛区
- 西北赛区和成渝赛区 被称为每年的 “死亡赛区”,可能是成电和西电太多同学想去菊厂了
- 全国总决赛奖项
- 一等奖,1队,奖金¥20万
- 二等奖,2队,每队奖金¥10万
- 三等奖,5队,每队奖金¥5万
- 最优美代码奖,1队,奖金¥1万
- 区域复赛奖项
- 决胜奖: 4队,进入全国总决赛,进入优才计划
- 优胜奖:每赛区第5-36队,区域36强,面试绿卡(2019年36强改为32强,面试绿卡改为笔试绿卡)
- 入围奖:每赛区第37-64队,区域64强,面试绿卡(2019年取消入围奖)
解析预测
- 赛题解析
- 来源:华为公司部门轮流出题,基本是公司内部实际业务为背景
- 算法:大部分赛题集中在图算法和最优化,也有一部分涉及预测和AI相关
- 目的:比赛会作为公司产品的一种推广手段,盲猜2018年与华为云有关,2019年与5G车联网和AI有关,今年或许会与鲲鹏计算平台或鸿蒙系统有关
- 时间预测
- 基于新型冠肺炎疫情防控形势,2020华为软挑预计会推迟 ,但不会取消举办
- 初赛启动时间可能会在3月底,复赛大概率由线下改为线上比赛,决赛举办方式应该会视疫情走势而定
- 赛题预测
- 为了保持软件竞赛初心和照顾参赛者,会延续前几届的出题方式,预测今年图算法和最优化相关的可能仍然很大
- 2019年在决赛中首次涉及AI车牌识别,今年AI的比重或许会增加,预测今年初赛重在软件基础,复赛会涉及AI,决赛会加深,仍会让参赛者使用自研平台
比赛实况
- 比赛难度
- 代码难度:不同于ACM等纯算法编程类比赛,难度要低得多,重在软件编程
- 题目难度:需求任务书是阅读理解,赛题从业务抽象,需要将题目简化。19年的复杂规则令人头秃,堪称历史最难
- 比赛规则:练习赛不是绝对,正式比赛才大浪淘金。正式比赛会增加数据规模,复赛和决赛会现场更改需求
- 实际参赛对象
- 学历:绝大多数是研究生 ,很多人是第一次参加纯代码比赛
- 专业:集中在计算机、软件、自动化、通信、数学等专业
- 动机:很多人参赛是因为比赛与自己研究方向相近,只有CS专业不这么想
0准备,如何苟
划重点!!! 前面介绍了这么多,接下来的才是重点,0准备,如何苟进复赛圈!
- 学会抱团
- 千万不要一个人肝!18年初赛练习赛进入前十,结果正式赛崩了,一个人手忙脚乱,成功一轮游。
- 好团队是必胜关键。19年组队,很多奇思妙想都是队友想出来的,分工配合,最后初赛第4,苟进复赛。
- 尽量多划水
- 划群划水划论坛。 划水同学们的福音。混迹八大赛区的群和论坛,与大佬们交流,你总能找到奇思妙想,我是认真的。
- 釜底抽薪
- 阅读理解要做好。 最好的成绩并不是最牛的算法,肯定是深入理解业务与赛题的算法。19年比赛,棋盘状道路上发车,我们的算法只是简单的Dijkstra,但我们采用了对角线发车,并尽可能选择双向车道,这种技巧明显降低了死锁率。
- 步步为营
- 先完成,再完美。 比赛一开始,不要考虑过于苛刻的条件和因素。基本思路是魔改基础算法+tips,做好阅读理解,先简化条件,提交一个有成绩代码。在此基础上,再继续迭代算法,相信我,你的心态会完全不一样。
- Python大法好
- 首次参赛且0准备的人。18年参赛的时候,我一个C++菜鸡几乎是0基础,看到输入输出文件后直接退缩了。重新现找视频学Python,当时的学习速度真的很快,学完即用。如果你也是这种情况,强烈推荐用Python,后期拓展AI也容易得多。
- 逆向工程
- 从判题公式出发。 18年的题目是预测+分配,判题公式是预测准确率*分配率。因为预测本来就不准,很多人先将分配率做到100%,然后反向预测,很多人利用了这一点而苟进复赛。
- 判题器并不必须。 19年的题目是车辆路径规划,规则巨复杂,为了避免死锁,很多团队开始刚判题器,将其嵌入自己的代码。但判题器并不是必须的,很多进入复赛的队伍,包括我们,都没有写。
- 稳一手
- 霸榜成绩稳一手。 如果自己算法达到的霸榜的成绩时,不要急于发出来,尽量苟到正式比赛。你想要霸榜,就要做好被人踢榜的准备。
- 需求更改稳一手。 正式比赛会修改需求,但并不是原来的代码不能用,而是修改后成绩更好。所以正式比赛时做好分工,有人改需求,有人继续尝试现有代码。
- 版本控制
- 版本不存档,比赛火葬场。 正式比赛会修改数据规模和需求,需要修改现有代码,原来版本很有可能会被将改崩,或者出现三个人的代码不一致的情况。如果因为版本问题达不到理想的成绩,就比较遗憾了。
目前如何备战
2020软件挑战赛即将到来,关于如何充分利用剩余时间备战软挑,冲进复赛圈,这里再分享几个tips。
- 输入输出文件
- 这不是说笑,很多人在看到输入输出文件格式后被劝退
- 输入一般为txt文件。注意涉及特殊符号、时间格式和文件的末尾空格
- 将这几年的文件读取和输出看一下,准备几个版本
- 图算法
- 路径规划算法
- 最大流算法
- 优化算法
- 遗传算法
- 蚁群算法
- 粒子群算法
- 预测算法
- 简易平均法
- 移动平均法
- 指数平滑法
- 线性回归法
- AI相关
- 主要是图像领域,包括但不限于图像识别,目标检测,行为骨骼点检测
以上算法,并不是要大家现在去学懂,学会,这并不现实。
但,至少要把对应的代码找到,链接保存下来,用到的时候可以很快找到。
了解我
- 关注公众号【两猿社】,进入公众号
- 带你丰富互联网相关项目经验,轻松应对校招!!!
- 项目模块详细讲解,在公众号内持续更新!!!