一 竞赛简介
万恶之源 各种竞赛知识的汇总。
1. 赛制介绍
https://zhuanlan.zhihu.com/p/129311302
2. 平台介绍
leetcode 主找工作,周赛/双周赛,每周都有,时间短,可查看别人的代码,学习别人的优秀代码和解题思路,成长快
codeforces 主竞赛,每周也会举办比赛(赛题质量高,全英文)
洛谷 (主竞赛,国内的高质量平台,常举行比赛,模板题讲解清晰,大佬多)
赛氪(主竞赛通告,国内的OJ平台,主要优点是国内竞赛的新闻会在这个平台发布,可多关注)
牛客 (主工作,也有周赛,要自己处理输入输出,比leetcode更贴近工作题/竞赛题)
其他大学的OJ也有不错的,例如北大的poj, 杭电的hduoj, 电子科大的cdoj
3. 竞赛介绍
蓝桥杯(一般四月份举行初赛,认可度高,获奖难度低,非常推荐参加) 获奖可奖学金加分/申请实践分(不需要助教拿学分了,可选择拿工资)尤其推荐参加python组,c++组一般是打ACM的真大佬,卷不过;java组参赛人数太少;python组研究生和本科生同组,优势明显。报名费300块,可信软学院代缴,获得国奖还有额外奖励。
传智杯 (一年一届,一般10-12月举办)
全国大学生算法设计与编程挑战赛 (每个季度一次比赛,才举办到第二届,认可度一般)
电子科技大学ACM校赛(链接是2021年的,没有官网,一般四五月份举行,请关注《成电微教务》,会有报名通知)
“联发科技杯”电子科技大学IEEEXtreme极限编程校内赛(链接是2021年的,没有官网,一般四五月份举行《IEEEUESTC》公众号,会有报名通知)
华为软件精英挑战赛(一般三四月份举行,不是常规的编程算法竞赛,偏工程中的实际应用,感觉难度略大)
中兴捧月杯(一般四五月份举行,难度比华为软挑低)
获取比赛消息的渠道:信软学院有个学科竞赛的qq群(1074685825),计算机学院通知群也有部分竞赛通知,赛氪平台的通知,相关的主办方公众号等。
二 我的一点经验
1. 语言选择
- C++? java? python? even javascript?
- C++ 新入坑的必选
- 对数据控制的极致,内置的容器,运行效率极高,使用简单;内置的算法,快排/二分查找/找下界等,可自定义数据结构,极其的好用;
例题 力扣周赛第三题 - 运行效率极高,很多数据规模临界的用例,C++能过,但是python过不了;
例题 IEEEXtreme极限编程校内赛 (比赛完看不了题了) - 例题讲解的示例代码很多都是C++ 写的,包括力扣周赛的排行榜前段的大佬;
- 各种OJ必定支持的一门语言.
- python 蓝桥杯必选 深度学习之友
- 蓝桥杯暴打本科生的不二之选,只会暴力解法都能一等奖的天选之组;
- 极致的代码简化,神奇的切片操作,写起来非常省心;
- 跑模型必须要会的一门语言,即使不搞神经网络算法,毕设也一定会要跑模型的;
- 主流OJ支持较好,但是比较老的OJ就不那么好了。(说的就是成电的OJ,ACM校赛居然只支持C++和java)
- java 工作之友
- 后端开发必会,spring全家桶要用的贼溜;
- 用来写竞赛算法嘛,就恩恩恩恩。。。个人不太合适,既不如C++运行效率高,没指针操作;也不如python代码简洁,有点鸡肋。之前ACM国际大赛上有队伍用过java,后来也弃用了。当然用来刷题,练java的熟练度,方便找工作的也很好,有不少同学也是这么做的;
- 主流OJ的支持较好,目测比python好。
- javascript 前端玩家打算法比赛的首选
- 之前看彦哥和然哥用过,我自己不会,感兴趣的咨询他们吧(很惭愧);
- 支持的平台较少,leetcode是支持的,但是主流的OJ支持率很惨淡。
- 总结:不同语言有不同的适用环境,一般意义上来说没有谁优谁劣,只能说对某个任务是否好用。
2. 编辑工具选择
- vim 永远的神
- 主键盘毁灭者,可完全无视鼠标的存在
- 单文件编辑最好用的编辑器
- 服务器文件编辑的最好选择,也许是唯一的选择
- 功能强大的代码补全插件,C++,python,java均支持
- 在编辑器内执行命令的特性让人欲罢不能
- 内置的gdb调试工具,代码调试较为方便
-
陡峭的学习曲线让人望而生畏
- 其他资料:
vim环境搭建
vim半小时入门官方教程。命令行执行下方代码:(如果要指定语言,用后面两个命令即可,分别是英文和中文,推荐用英文版,方便编辑)
vimtutor
vimtutor en
vimtutor zh
简要讲解vim的三种模式。
- pycharm python之友
- 不用过多解释,写python的首选工具
- idea java必选
- 也不用过多解释,写java的首选工具
3. 常用技巧
- 刷题的结构组织
按照各个OJ平台作为一级目录,题目编号作为二级目录,二级目录下的是源代码和输入输出文件。整个文件夹用git做版本管理,可推送到自己的github上,避免由于系统崩溃等原因导致的数据丢失。 - 输入重定向
./a.out <in.txt
python3 my.py <in.txt
- 输入/输出重定向
./a.out <in.txt >out.txt
python3 my.py <in.txt >out.txt
- 结果自动对比
diff out.txt std.txt
- 对拍
对拍是个啥,用来做什么的 - 暴力打表找规律
一个网友的例子
古人云:骗分过样例,暴力出奇迹。暴搜挂着机,打表出省一。
俗话说:十年OI一场空,不用long long见祖宗。
- 蓝桥杯如何查文档
python是提供了内置package的使用文档的,查询方式如下:
python3
>>> help()
- 输出带有固定字符的题目,一定要用CV,别过于相信自己的眼睛和手
之前比赛有题目的输出只有Y5S!
或者NO
,比赛结束的时候一群人觉得自己代码没错,结果提交上去一直WA
,有人就提示说输出的不是YES!
中间的是个5
. - 要有平和的心态
不是大佬的话,建议还是跟榜做题,挑AC
多的题目做。
也不要死磕,某题做不出来,或者一直WA
,该放弃就放弃。
三 背包问题
经典中的经典 背包九讲
例题:
01背包
完全背包
多重背包(二进制优化)
混合背包
二维费用背包
分组背包
依赖背包