O准备如何苟进复赛圈?华为软挑开挂指南(附赛题预测)
事先声明,这不是华为软挑的软广,我也不是海军。
这篇文章纯粹是心血来潮,原因是去年上传到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相关
- 主要是图像领域,包括但不限于图像识别,目标检测,行为骨骼点检测
以上算法,并不是要大家现在去学懂,学会,这并不现实。
但,至少要把对应的代码找到,链接保存下来,用到的时候可以很快找到。
了解我
请关注公众号 “两猿圈”.
- 带你丰富项目经验,轻松应对校招!
- 项目模块详解,公众号内持续更新!

O准备如何苟进复赛圈?华为软挑开挂指南(附赛题预测)的更多相关文章
- IMCASH:看着朋友赚钱进币圈 我凭啥亏钱? 4月29日币圈报告
即将过去的四月份,币圈的行情总体是不错的,比特从4000附近最高涨到了5600以上的位置,当前也在5200左右,而成交量更是创出历史天量(4月3日,全球加密货币市场的交易量达890亿美元,创历史天量) ...
- Android仿微信朋友圈,全文收起功能,附源码
在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文 ...
- 华为RH2288V3服务器部署指南
一.配置好局域网 首先配置好局域网,将电脑和服务器通过网线直连,服务器默认IP192.168.2.100,因此电脑本地的IP需要设置一下改为和服务器同一网段: 二.登录导控制页面 浏览器中输入服务器的 ...
- 华为oj 挑7
#include<iostream> using namespace std; bool ishave_7(int n); int main(){ int num,k=0; cin> ...
- NOIP模拟测试25
这次考试后面心态爆炸了...发现刚了2h的T2是假的之后就扔掉了,草率地打了个骗分 T1只会搜索和m=0 最先做的T3,主要是发现部分分很多,当时第一眼看上去有87分(眼瞎了). 后来想了想,感觉一条 ...
- 秋招打怪升级之路:十面阿里,终获offer!
本文转载自:https://gongfukangee.github.io/2019/09/06/Job/ 作者:G.Fukang 开源项目推荐: JavaGuide: Java学习+面试指南!Gith ...
- leetcode_课程表(BFS、拓扑排序)
题目描述: 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 .在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹 ...
- <路径算法>哈密顿路径变种问题(2016华为软件精英挑战赛初赛)
原创博客,转载请联系博主! 前言:几天前华为的这个软件精英(算法外包)挑战赛初赛刚刚落幕,其实这次是我第二次参加,只不过去年只入围到了64强(32强是复赛线),最后搞到了一个华为的一顶帽子(感谢交大l ...
- 华为C语言笔试题集合
①华为笔试题搜集 1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为 ...
随机推荐
- vue兄弟组件传值——事件总线
1.创建一个js文件,例如msg.js,放到合适位置,例如components中,或者其他位置也行.然后在兄弟两个组件中分别引入msg.js文件 msg.js: import Vue from 'vu ...
- CTPN-自然文本场景检测代码阅读笔记
TensorFlow代码 https://github.com/eragonruan/text-detection-ctpn 训练 main/train.py 1. utils/prepare/spl ...
- js 极简获取表单 元素 !
let s =[]; $.each($('#formSearch input'),(m,n)=>{s.push(n)}); //示例获取表单所有 input 下滑线分割的 name 集合.set ...
- LoopBox 用于包装循环的盒子
/******************************************************* * * 作者:朱皖苏 * 创建日期:20180608 * 说明:此文件只包含一个类,具 ...
- 常用crud
增:@Insert("insert into t_user (`last_name`, `sex`) values(#{lastName}, #{sex})") 删:@Del ...
- 关于爬虫的日常复习(18)——scrapy系列3
- maven install 报错 Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
pom文件引入以下依赖 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId> ...
- PythonI/O进阶学习笔记_11.python的多进程
content: 1. 为什么要多进程编程?和多线程有什么区别? 2. python 多进程编程 3. 进程间通信 ======================================= ...
- Dart语言学习(九) 运算符
一.运算符及其描述 二.Dart运算符注意点 1. 除法运算符"/" 和 整除运算法"~/" 的区别 除法运算符 "/" 结果是浮点型 整 ...
- Git详解之其他系统结合
前言 世界不是完美的.大多数时候,将所有接触到的项目全部转向 Git 是不可能的.有时我们不得不为某个项目使用其他的版本控制系统(VCS, Version Control System ),其中比较常 ...