分享

有哪些值得推荐的计算机专业的竞赛?

 昵称25832105 2018-04-22

在真的告诉你搞哪些算法竞赛值得之前,我们先分析一下:参加这些竞赛,为这些竞赛获得好名次,投入大量精力,值不值得?答:看你读研的方向。机器学习/数据挖掘/计算机视觉:没必要。这些时间投入算法竞赛,基本打水漂,因为基本上南辕北辙了。你现在需要,补对线性代数的理解,补数理统计,补高数,然后买些机器学习的书,了解一些方法,之后真开始干活,基本就这类需要很强的线性代数和数理统计基本工的活了。当然,之后有点相关经验了,你应该考虑去参加阿里天池、Kaggle平台,等数据挖掘相关的竞赛了。(当然前段时间,还有个滴滴研究院搞的滴滴算法大赛,也是这方面的比赛)总之,这个方面,你需要通过数据挖掘的竞赛积攒经验、证明实力、吸引企业来要你,而不是传统的算法竞赛。

云计算/操作系统/计算机网络:没有那么强的必要性,与其投入算法竞赛,不如,先复习你的数据结构课本,然后学习算法导论,当然还有你的操作系统、计算机体系结构和计算机网络课,也得补。(如果数据结构、算法导论什么的,太难看懂了,没关系,还有一些简易的,比如算法(第4版) (豆瓣)

传统的理论计算机科学:啊这就不要废话了,什么样的算法都逃不开你的研究范围,除了确定性的、精确的,还有非确定性的、近似的,这都要搞掂,不是吗?



OK,如果上面这么说了,你觉得你有必要参与算法竞赛。

首先帮忙排除选项:ACM/ICPC 理由:除非你天赋异禀,现在能(CodeForces打3场比赛,div1也能做个3~4个题/TopCoder能轻松搞定3场的div1 250和500分题/多校训练能单打,打出队伍排名前40的水平),然后还能联系上你们学校负责ICPC的教练,展示你做题的实力并说服他,否则,别人没有理由,对10月马上就要进行的比赛,拆掉别人训练了一段时间的组队(现在这个时候基本都训练一个月了),给你找靠谱的队友,给你参赛机会。我个人目前没见过短期(1~2个月)能练出高水平的,虽然不应该排除天赋异禀的人的存在……但是对普通人来说,这个训练周期还是按年计的。而且你就只有研一,如果没有跳级的情况,也就是今年9月这一个机会了(研二选手不是没有,但是首先,人家不是研一开始,是大三开始,其次,人家研读了规则,用年龄限制满足这一点继续打)……


接下来,先整理这些比赛:传统的,快速做有确定性解法题的非商业比赛:ACM-ICPC、CCPC(中国大学生程序设计竞赛,新东西,不确定能不能接受研究生)、CCCC-GPLT(中国高校计算机大赛之团体程序设计天梯赛,规则中说仅限本科生)传统的,快速做有确定性解法的商业比赛:TopCoder Open(Algorithm这一块,Marathon那块单独划分,其他Development的项目同理), Google Code Jam, Facebook Hacker Cup 算法Marathon类(不确定性、近似算法,长期的)商业比赛:华为软件精英挑战赛(得到的消息是,之后继续出2016年这种有工程背景的算法Marathon题)模式混合/混乱的:百度之星(初赛、复赛都是传统模式,决赛不一定,应该划分为算法Marathon类)计蒜之道(http://dao.jisuanke.com,同百度之星的方案)微软编程之美(最近在改比赛流程,最早是初赛复赛传统模式和CodeHunt并行,决赛1天hackthon做项目,今年是CodeHunt-半个多月时间做明确目标的、执行效率高的小项目-1天hackthon的节奏)

数据挖掘类:阿里天池大数据比赛(平台)、Kaggle(平台)项目导向的:微软创新杯(应该还有其他的,这类我真不知道……)已经没什么消息的:有道难题、腾讯马拉松、携程CodingTrip等


OK,在评论区套出来题主读研的大体方向以后,我个人给出如下推荐: 1、数据挖掘类竞赛(天池大数据、Kaggle、KDD Cup等,还有最近结束,不一定长期的滴滴算法大赛)准备方案:参考参加kaggle竞赛是怎样一种体验? - 大数据 2、(个人想去的公司举办的)商业比赛。(比如华为,虽然感觉之后软件精英挑战赛再出数据挖掘的概率不大,但是华为的云操作系统部还是通过这个挑战赛拉了好多人走……)(至于Google Code Jam,是熟悉之后校招在线笔试系统为主要目的了)准备方案:参考往年的赛题、大家提供的解题思路,还有多多提高你的算法与数据结构的基本功,还有你的自学能力。 =========================================================== 有关oj:之前从没听过lintcode,codility,一查,全是面向招聘的oj…… 拿这3个面向招聘的oj来准备算法竞赛,基本走偏了(一小半),至少冲前面的名次是不可行的。传统向的算法竞赛喜欢什么? idea的确会做考察,但是面试题那点小套路,在算法竞赛中,只能用于去掉末尾一段的人。要真的拉开档次,要用什么?面试题从来不会问的,“稀奇古怪”的东西,比如,线段树与树状数组——对不起,这俩东西在国内ACM/ICPC圈基本是,就算是刚入门的也得会用,不然都不好意思说自己搞过这个竞赛。what?没听过AC自动机、后缀数组与后缀树、最大流、费用流、FFT、树链剖分与动态树、Splay、Treap?求乘法逆元会吧?求树上两个点最近公共祖先的每次查询O(logn)的算法知道吗?(高难知识与简单知识在上面混杂555555)

很快就会发现,如果你是为了找份好工作,刷算法竞赛,还不如不刷,把Google、MS往年在线笔试题全都搞懂也是个性价比很高的方案。

还是推荐一点实操方案吧。

如果铁了心要做算法竞赛,或者就铁了心要跟着ACM/ICPC选手一起练习: 1、线上参与CodeForces、TopCoder、CodeChef(印度的一个在线oj兼比赛平台)、hihocoder(其实个人……不太推荐,挑战赛的题目难度不太友好,校招的难度和知识面又有限)等的比赛,赛后自己总结哪里做得好,哪里做得不好,找高手的题解、官方的题解,消化,学习不懂的知识点。 2、买书。刘汝佳的《算法竞赛入门经典(第二版)》和《算法竞赛入门经典训练指南》(称作紫书和大白书)被很多人视为经典。的确其中知识点齐全,难度拔高够足的,就是对新人有点不友好。新人友好的,比如日本人写的《挑战程序设计竞赛》(国内有翻译,浙大有相当足的经验的选手翻译,浙大这方面比较关心的老师审校的,人民邮电出版社出版) 3、根据从书上学到的知识点,在网上找题,做针对性专题练习。平时练习的oj方面,poj、zoj(浙大的oj)、hdoj、sgu、spoj等都可以。搜索oj名+知识点关键词,可以看到一些经典题。搜索oj名+题目分类,可以看到别人整理好的题目分类。

如果想了想,觉得只是为了找工作而准备刷题: 1、那些针对招聘的oj都可以做一圈 2、我个人不反对你去买面经、看别人的面经、做往年招聘真题 3、关键是:扎实数据结构与算法基础,扎实计算机基础(操作系统、计算机网络、计算机组成原理)、扎实你研究生做的方向的专业知识与技能。

====================================================

先扯这么多,想到什么继续补充。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多