普通学生如何面对ACM,算法金奖得主带你领略

首先要给大家介绍一下ACM-ICPC的相关背景和信息: 

  • 国际大学生程序设计竞赛 ACM-ICPC 实际上简称 ICPC (International Collegiate Programming Contest ) 
  • ICPC 的举办方是美国计算机协会 ACM (Association for Computing Machinery),由1970年发起,至今已举办近50届
  • 美国计算机协会_百度百科美国计算机协会(Association for Computing Machinery; ACM),成立于1947年,是一个国际性的科技教育组织,是世界上第一个科学性及教育性计算机学会,总部设在美国纽约。美国计算机协会致力于提高信息技术在科学、艺术等各行各业的应用水平。从成立之初美国计算机协会就开始为会员的信息、思想和发现提供交流平台。截至2007年,美国计算机协会已经拥有100多个国家和地区的超过十万名专业会员,他们来自企业、学术机构和政府组织。https://baike.baidu.com/item/%E7%BE%8E%E5%9B%BD%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%8D%8F%E4%BC%9A/1896077?fr=aladdin
  • ICPC 一般分为 亚洲区域赛(reginal)、亚洲总决赛(ec final)、世界总决赛(world final),下面会分别进行具体介绍。
  • 国内举办的就是 中国大学生程序设计竞赛 CCPC
  • 下属到省级的赛事就是 某某省大学生程序设计竞赛(比如江苏,就叫JSCPC)

比赛场地一般长这样:看了是不是很热血!

普通学生如何面对ACM,算法金奖得主带你领略_第1张图片

奖牌一般长这样:

普通学生如何面对ACM,算法金奖得主带你领略_第2张图片

普通学生如何面对ACM,算法金奖得主带你领略_第3张图片

冠亚季军是奖杯:

普通学生如何面对ACM,算法金奖得主带你领略_第4张图片

ICPC详情介绍:

某些强省的省赛的含金量是很高的【但是相对区域赛来说,知名度有所不及】,比如江苏和浙江,教练曾说“拿到JSCPC的金奖,ICPC都不用去打了。”这句话当然是考虑到本校实力,也出于激励学生的目的,毕竟只是双非中最弱的那一批(二本&新设协会),不过最厉害的那一队也在19年南昌区域赛跻身银牌中上游。

ACM-ICPC亚洲区域赛(全国角逐),一般是由申获举办比赛资格的强校承办(比如:北大、上交、浙大、哈工大、西工大、西电、东北大学、石油大、新疆大学、河南理工、矿大、齐鲁工业大学、湘潭大学...),全国各地学校的队伍通过网络预选赛,按一定比例角逐参赛资格,一般 网络赛学校名次跻身前列 才有机会参加区域现场赛,并且最终能否参加还要看自身队伍在校队的水平,由教练考量决定是否同意前往(每所高校获得的现场赛名额原则上不得超过3个)。正赛金银铜奖的比例分别是10%、20%、30%,但是所有奖牌总数一般不得超过210(没有记错的话是这个数),这样的比例结合名额获取的不易,参赛获奖难度大概就要上升一倍。为了增加比赛的趣味性,还增加了最快解题奖、最佳女队奖等特殊荣誉奖项。

以2018年在矿大举办的第43届ACM-ICPC亚洲区域赛(徐州站)为例,现场赛名额获取途径如下:

普通学生如何面对ACM,算法金奖得主带你领略_第5张图片

--------------------------------------------------------手绘分割线----------------------------------------------------------

以上的模式是疫情前的常规正式模式,疫情发生后,基本上都改为线上赛,这也导致新生选手难以体会到现场赛的特殊氛围与感受。线上赛不再设有网络预选赛,只会提供热身赛帮助熟悉比赛环境,但也形成了另一种局面:数百支队伍蜂拥而至,更有甚者,七八百支队伍争夺两百多枚奖牌,竞争激烈程度仍然很大,而且隐约感觉线上赛加剧了竞赛水平的两极分化(强校强队蜂拥而至,获奖几率更加渺茫)。

此外,就拿 亚洲区域赛 reginal 而言,想要拿奖也不是什么容易的事,普通一二本苦练三四年,最后没有拿到奖牌的也不少毕竟竞争的对象是来自全国各强校的算法竞赛大佬,强校还拥有很多特招的竞赛生(有的从小学/中学就开始学习算法了,到了好的环境,只要不懈怠,稳金牌一般都没有问题!遇到这样的大佬不要轻易放过,每一个都可能成为竞赛协会的瑰宝。)大家也千万不要觉得打不过小学生而气馁,毕竟大学已然不是最佳的学习时间了,知耻后勇才是正道

如果没有浓厚的兴趣、坚定地信念、坚毅的毅力和相应的竞赛环境作为支撑,劝不要轻易入口坑。

算法竞赛考察的纯粹是参赛者的自身实力或者说是参赛学生队伍的实力汇聚,该是什么样基本就是哪样,评审环节机测,不会因为某某赞助或者因为导师是某某大牛而影响成绩。


竞赛的主流语言和算法题型:

  • 算法题一般都是C++写,除了高精度和大整数用Java比较方便,过往少数的初中算法竞赛生一般开始的时候用python。C++比较重要的特性就是STL等操作。
  • 基础的算法包括:排序算法、贪心算法、枚举、模拟、递归、分治、二分、前缀和&差分、构造、回溯等。
  • 什么算法都不需要的(比如只用for循环)做法一般称作朴素做法/暴力,但也因此会把考点放在思维换算(比如时间单位等细节 或 实际物理/生活场景的抽象上)。蓝桥杯大题第一题一般就是这种,只要针对性练习一些就可以。

上升难度的算法有:

  • 搜索(深搜dfs/广搜bfs,其实属于图论)
  • 动态规划dp(递推、背包、LIS、LCS、区间dp、树形dp、数位dp、概率dp、状压dp、四种优化dp,一般遇到的分为一/二/三维,总的来说二维dp居多)
  • 前缀和/差分(一维/二维)
  • 数论(快速幂、阶乘、逆元、费马定理、中国剩余定理、组合数学、概率、线代、高斯定理、卢卡斯定理、第二类斯特林数...)
  • 博弈论(尼姆博奕Nimm、巴什博奕Bash、威佐夫博弈Wythoff、单双人sg游戏基础四大类+拓展Nim-斐波那契)【博弈论说简单不简单,说难不难,一般有思路了就用那几种写法去碰,说不定就是对的】
  • 图论(最短路、拓扑排序、树上问题、各种图、最小生成树、k短路...)
  • 计算几何(遇到就是凸包什么的,ACM金银牌题,一般人不用管)
  • 字符串算法(字符串匹配、哈希、后缀数组S、字典树,像AC自动机这种可能就是ACM银牌题了)
  • 还有一些题比如网络流、权值线段K-D树不是很长考,但一般出了就是至少reginal银级的题目了

...

一般,蓝桥杯能否拿到省一主要就看动态规划(也就是dp,一般在大题第二题,会基础背包和简单的应用即可)和搜索大题(一般也不难,是模板题)是否拿分了,一般江苏C语言B组填空题错一道+两道大题满分+其他题用暴力骗骗分基本就是省一进国赛。


进军大厂/科研基础:

下面主要就是和就业(去互联网大厂技术岗)相关的了~

博主以最近遇到的一件事为切入点赘述:

近日遇到了某同学吐槽ACM-ICPC在高校竞赛榜地位不够的问题。作为一名ACM爱好者,我也曾有过同样的愤懑,但是后来觉得某些东西(比如互联网创新类比赛)可能确实要被大力提倡,因为它不仅能提供给更为广大的群体一个同台竞技,可供发挥的平台,从而角逐出一定质量和数量的优胜者,更是迎合了社会对于专项人才的需要。

实际上不难理解,ACM不会是一个很大众的比赛,也不会适合大众,上手较难,取得成果的周期长,对于弱校的普通选手而言,能有参加区域赛的机会就是不错的,铸铁成铜更是可能让竞赛生涯取得圆满。

不必多说,我就是这一类,很遗憾大二因为身心不适退役了(私人原因不便透露)

ACM至少对于本科就业是友好的,给出身边的一些例子:了解到的211银牌佬转正首年总包一般在三四十万及以上,双非铜银牌则在二三十万左右(所知有限吼)

在没有好的院校背景作为支撑并且没有实习经历的情况下,竞赛+项目+其他是个不错的选择。毕竟一般都是走校招,大学竞赛无疑ACM最匹配了。

能够凭其它优势进笔试面试,其实ACM确实不是必要的,强者自有其优势。然而ACM较好,笔试面试遇到算法题都ok,准备过程中也不用费太多心思刷力扣,背背八股就差不多了,项目的话,我觉得大家大学期间一般都会做到几个。

ACM诚然是能作为很好的敲门砖的,也能让某个群体在迎合兴趣的同时,保持不错的优势,进而让以后的路不难么艰难;或者说是让某类人得以“锦上添花”。

Acmer在大厂恰巧挺受到欢迎。其他方面不差,算法和数据结构基础又不错的孩子,谁能不喜欢呢?毕竟去到公司不是写代码,思维和算法尤为重要啊!

由于自身所处环境和实力有限,可能目光有所局限,所说只涉及普通疾苦大众,思想不成熟处望指正!

最后希望大家都能过得开心、身体健康,早日实现自我。

普通学生如何面对ACM,算法金奖得主带你领略_第6张图片

你可能感兴趣的:(杂谈,算法竞赛,acm竞赛,经验分享,算法,程序设计,程序人生)