一文讲清:ACM/蓝桥杯
一文讲清:ACM/蓝桥杯
本文将详细介绍ACM和蓝桥杯两个计算机竞赛的相关信息,包括竞赛内容、难度对比、获奖价值以及备战建议。
什么是蓝桥杯?什么是ACM?
蓝桥杯(个人&团体)
蓝桥杯全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心主办、国信蓝桥教育科技(北京)股份有限公司承办的计算机类学科竞赛。该赛事已连续多年入选中国高等教育学会"全国普通高校大学生竞赛排行榜"竞赛项目榜单,具有较高的认可度和影响力。个人赛为主。对于学生来说,在蓝桥杯中取得优异成绩,不仅能够获得荣誉证书,还有机会在保研、就业等方面获得优势。
蓝桥杯的竞赛项目分为6大类:软件赛、电子赛、项目实战赛、数字科技创新赛、视觉艺术设计赛、专项赛。咱们计算机专业的同学参加的是:软件赛。(tips:大赛不对专业做限制)
报名时间:2024年10月8日起 - 12月13日止。
赛制安排:省赛->国赛。
赛程安排:2025年4月省赛,2025年6月中上旬国赛。
报名资格:具有正式全日制学籍的研究生、本科生及高职高专学生。
参赛组别:
- 研究生只能报研究生组。
- 985、211 本科生只能报大学 A 组或研究生组。
- 其他院校本科生可自行选择报大学 B 组及以上组别。
- 高职高专院校学生可报大学 C 组或自行选择任意组别。
报名方式:学校及选手登录蓝桥杯官方网站在线注册并报名。
报名费用:300/每人。
参赛地点:对应省市内,经过授权的高校。
考题形式:**填空题+编程题,**时长4小时,7-10道题。(填空题有唯一答案,编程题按通过用例数计分。)
ACM(团体)
ACM是国际计算机学会(Association for Computing Machinery)以及以该学会名义举办的国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM-ICPC或ICPC),小组赛为主。创办历史悠久。是全球大学生计算机程序能力竞赛活动中最具国际权威性和影响力的一项赛事,已成为衡量大学生程序设计能力和学校计算机学科水平的重要标准之一。
报名时间:一般根据学校情况,学校需要选拔队员,要求较高,要有准备。选拔后,学校派出校队参赛。有的高校没有组队参与,学生就没法参赛。所以一定留意你的学校~
赛制安排:邀请赛 -> 网络预选赛 -> 区域赛 -> 全球总决赛
赛程安排:
- 邀请赛:是一些特定高校或地区为了提高学生编程水平和为ICPC区域赛做准备而举办的竞赛。邀请赛通常邀请一定数量的高校参加,有时也会邀请国际高校。邀请赛的特点是规模相对较小,但竞争激烈,题目质量高。
- 网络预选赛:是ICPC区域赛之前的一个在线竞赛阶段。参赛队伍通过网络预选赛来争取区域赛的参赛资格。网络预选赛通常在网上进行,由主办方发布竞赛题目,参赛队伍在规定时间内提交解答。
- 区域赛:是ICPC的一个重要组成部分,每年在各个国家和地区举办,选拔出优秀的队伍参加全球总决赛。在中国,区域赛通常在多个城市举行,如北京、上海、南京、西安等,每个区域赛的举办地通常会有一所著名大学作为承办方。区域赛的目的是选拔出各地区最优秀的队伍,并提供一个平台让学生们展示他们的编程和算法技能。区域赛的获胜队伍将有机会参加ICPC全球总决赛。区域赛一般安排在上一年的9-12月举行。
- 全球总决赛:区域赛的优胜队伍参加全球总决赛,与来自世界各地的顶尖队伍竞争。通常安排在每年的 3 月至 5 月举行。
(tips:以上只是大致的时间范围,具体的比赛时间需要关注各赛区或学校发布的官方通知。)
报名资格:
- 队员必须是在校学生。包括研究生、本科生、专科生等。通常要求是全日制学籍。
- 每支队伍需要有一名教练。
参赛组别:
- 校内选拔赛按编程能力区分(初级、中级、高级组)。
- 区域赛+全球总决赛不分组。按算法匹配。
报名方式:校内报名。
报名费用:校内选拔、区域赛按自己所处区域为准。如果进入决赛必然无需花钱,反而还有奖金。
参赛地点:按自身所处区域为准。
考题形式:编程题,7道及以上,5小时完成。
二者的获奖率
蓝桥杯:
- 省一等奖:省赛排名的前10%;省二等奖:接下来的20%;省三等奖:再下来的30%。也就是说:60%的人能在省赛获奖。
- 省一等奖,可以参加国赛。国赛:一等奖不高于5%,二等奖占20%,三等奖不低于35%。优秀奖不超过 40%,零分卷不得奖。
ACM:比赛期间可以看到实时排名,按照答题时间+罚时来排名。
- 一般分别按10%,20%,30%的比例颁发金,银,铜奖。即一般情况(120队伍)有12支队伍获金牌,24支队伍获银牌,36支队伍获铜牌,其余正确解出至少一道题的队伍为优胜奖。
竞赛获奖对未来有什么帮助?
竞赛的好处:
- 能力的提升(习得技能)
- 履历更加好看(获奖经历)
- 能力提升:
因为竞赛主要考察的是:算法能力。
- 专业技能的提升:计算机语言(C/C++/Java等)和数据结构和算法的学习、掌握和应用。也就是我们通常说的代码能力的提升。
- 软实力提升:逻辑思维能力和学习能力的提升。
但在竞赛中写代码,追求的是程序的效率和一定程序的可读性,也就是解决了问就行,很多情况下放弃了工程性,这一块是企业中开发不推荐的(弊端)。
- 履历更好看
我们在毕业后必然要走向社会,找一份工作的。如果找计算机相关的工作,有技术实力的同时,再能有竞赛获奖,那是锦上添花的。为什么是锦上添花呢?因为能力和实力其实更加重要!
技术实力满足了企业的招聘的要求后,那获奖会让你比别的候选人更有优势。如果技术实力不足,再多的证书意义都不大!!面试官会怀疑你的获奖真实性!
3.企业的招聘要求
那企业在校园招聘期间,要求都有哪些呢?
腾讯的校招岗位招聘比例:
技术类岗位的要求:
划重点:校招考察的重点:
- 计算机语言(C/C++****/JAVA)
- 数据结构和算法
- 操作系统&系统编程
- 计算机网络(网络协议+网络编程)
- 数据库-MySQL
- 实战项目
其中不难发现,算法和数据结构很重要,但是校招考察的不仅仅是算法和数据结构,好的企业对一个学生的基础技术会全面的考察,并且要求不错的深度。
4.未来的找工作的形式
一面:技术面试 - 技术问答+写代码+讲项目
二面:技术面试 - 技术问答 +写代码+讲项目
三面:HR面试 - 非技术考察,价值观&性格&家庭情况了解&情商了解&逻辑思维&沟通表达等
(切记,在参加竞赛的同时,不要让自己偏科了,要均衡发展。)
ACM/蓝桥杯难度比较
1.赛制难度:
ACM:
- 提交反馈与罚时机制:每道题提交后会有反馈,能看到“通过”“运行错误”“答案错误”等结果,但看不到错误的测试样例。如果程序没通过会有罚时,每次罚时20分钟。过多次被罚时会影响最终排名。
- 团队协作要求高:ACM是团队赛,每队由3人组成,共用一台电脑,去解决每一道难题,很考验协作性。
- 实时排名压力:比赛过程中可以看到实时排名,你不仅要专注于解题,还要时刻关注其他队伍的进展。
蓝桥杯:
- 提交方式与反馈:是OI赛制,每道题提交之后没有任何反馈。每道题都有多个测试点,根据每道题通过的测试点的数量获得相应的分数。每道题不限制提交次数,仅以最后一次提交为准。
- 个人赛形式:蓝桥杯主要是个人赛,选手只需要专注于自己的解题思路和代码编写,不需要考虑团队协作的问题。
2.题目难度:
ACM:
- 题目深度和广度:ACM的考题范围非常广泛,涉及:数据结构、算法设计、图论、计算几何、数论、离散数学、组合数学等各个方面。而且部分试题没有成型的算法,要求选手在场上发挥自己的创造力。
- 英文题目:题目为全英文,必须要在很短的时间内准确理解问题的每一个细节。
蓝桥杯:
- 难度层次分明:蓝桥杯的题目难度层次较为分明。通常前面几道题目相对简单,中间会有程序填空题,难度有所增加,后面的编程大题难度较大,难度呈阶梯状上升。
- 考察重点相对集中:蓝桥杯主要以数据结构和算法为核心,重点考察选手对常见算法和数据结构的掌握程度。与ACM相比,考察的知识点范围相对较窄,题目深度也有所不及。
从赛制、题目方面来看,ACM的难度都要高于蓝桥杯。不过,这并不意味着蓝桥杯就很容易,要想在蓝桥杯的国赛中取得优异成绩,也需要选手具备扎实的编程基础和较强的算法设计能力。如果你们学校的ACM队伍很强,并且自身综合实力也不俗,冲击ACM是更有含金量的。但若没有合适的队伍,或者英语不佳,蓝桥杯是好的选择。而且在蓝桥杯中若获得中上的奖项,对企业来说吸引力依旧不小。
ACM和蓝桥杯分别考什么内容?
1.蓝桥杯考点
大学C组:枚举、排序(冒泡、选择、插入排序)、搜索算法(DFS、BFS)、贪心、模拟、二分、DP(普通一维问题)、高精度、数据结构(栈、队列、链表)、初等概论。
大学B组:排序(归并排序、快速排序、桶排序、堆排序、基数排序)、搜索(剪枝、双向BFS、记忆化搜索、迭代加深搜索、启发式搜索)、动态规划:DP(背包DP、树形DP、状压DP、数位DP、DP的常见优化)、字符串(哈希、KMP、manacher)、图论(欧拉回路、最小生成树、单源最短路及差分约束系统、拓扑序列、二分图匹配、图的连通性问题、DFS序、最近公共祖先)、数学(排列组合、二项式定理、容斥原理、模意义下的逆元、矩阵运算、高斯消元)、数据结构(ST表、堆、树状数组、线段树、Trie树、并查集、平衡树)、计算几何(基础计算和基本位置关系判定、概率论、博弈论)。
研究生及大学A组:字符串(AC自动机、扩展KMP、后缀数组、后缀自动机、回文自动机)、图论(网络流、一般图匹配)、数学(生成函数、莫比乌斯反演、快速傅里叶变化)、数据结构(树链剖分、二维/动态开点线段树、平衡树、可持久化数据结构、树套树、动态树)。
(tips:各组考点难度向上兼容。A组需同时掌握B组和C组知 识点,B组需同时掌握C组知识点。大纲列举内容仅供参考,实际比赛内容不限于大纲列举内容。)
- ACM考点
数据结构:栈、队列、链表、哈希表、哈希数组、堆&优先队列(双端队列、可并堆、左偏堆)、二叉查找树(Treap、伸展树)、并查集(集合计数问题、二分图的识别)、平衡二叉树、二叉排序树、线段树(一维线段树、二维线段树)、树状数组(一维树状数组、N维树状数组)、字典树、后缀数组、后缀树、块状链表、哈夫曼树、桶、跳跃表、Trie树(静态建树、动态建树)、AC自动机、LCA和RMQ问题、KMP算法。
图论:基本图算法图、广度优先遍历、深度优先遍历、拓扑排序、割边割点、强连通分量、Tarjan算法、双连通分量、强连通分支及其缩点、图的割边和割点、最小割模型、网络流规约、2-SAT问题、欧拉回路、哈密顿回路、最小生成树问题(Prim算法、Kruskal算法(稀疏图)、Sollin算法等)、最短路径问题、最大流、匹配、拓扑排序、弦图、稳定婚姻问题等。
搜索算法:广搜及状态优化(利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A算法)、深搜及优化(位运算、剪枝、函数参数尽可能少、层数不易过大、双向搜索或者是轮换搜索、IDA算法)、记忆化搜索。
动态规划:四边形不等式理论、不完全状态记录、背包类问题、线性DP、单调性优化、贪心&dp问题、状态DP、树形DP等。
数论:中国剩余定理、欧拉函数、欧几里得定理、欧几里德辗转相除法求GCD(最大公约数)、扩展欧几里得、大数分解与素数判定、佩尔方程、同余定理(大数求余)、素数测试(一千万以内:筛选法、一千万以外:米勒测试法)、连分数逼近、因式分解、循环群生成元、素数与整除问题、进制位、同余模运算等。
还包含:组合数学、计算几何、计算方法、博弈论等大类知识,过于庞大,这里就不进行展开。
(tips:以上大纲仅作为参考。)
如何有效备战?
不管是ACM还是蓝桥杯,其实都是算法竞赛,就是难易程度和比赛形式(赛制)的差异。那如何备战呢?有人说,那就刷算法嘛~
其实这个也是循序渐进的,由易到难,由浅入深的,适可而止~
- ACM&蓝桥杯备战
Duoni早已为大家准备好备战资料(附局部图)~
内部包含:往年真题、算法书籍、刷题平台。为你的备赛保驾护航!
2.其他比赛和一些考证
编程类型的比赛,有机会可以参加,比如:CCPC,PTA。
Leetcode周赛/双周赛 - 可以参加。
数学建模比赛,如果没啥比赛参加也可以参加。
互联网+ 的大创(大学生创新创业大赛) 有时间并且感兴趣也可以参加。
(tips:如果是打算混,其实没啥意义,如果真的有很好的创意,那其实也是可以参与的吗,这是创意类比赛。)
有特长,参加省级国家级比赛也是可以的。
奖学金有一些意义(至少证明你不差,但是不能说明技术很牛)。
软师证书,程序员证书,计算机二级, - 如果是为了就业就不要考了,没啥用的。
教师资格证,搞技术大概率用不上,但是未来有打算当老师的有必要的。
驾照 - 这个可以有,这是意向未来极有可能用到的机能。
(建议: 比赛很多,时间有限,不要盲目参加比赛)
总结
1.竞赛的目标要清楚:
- 提升自己的能力
- 增加好的履历
2.竞赛(ACM和蓝桥杯)能提升某方面的能力,而就业找工作,需要的比较全面:
- 计算机语言(C/C++/Java等)
- 数据结构和算法
- 操作系统(操作系统和Linux系统编程)
- 计算机网络(网络协议+网络编程)
- 数据库(MySQL)
- 实战项目
3.获奖荣誉和证书都是锦上添花的东西
技术未达标的情况下,再多的获奖都会被质疑。
4.不要跟风考一些没用的证书,浪费钱,浪费时间
把自己的主要精力放在能力提升上,有了能力,竞赛也好,找工作也好都不是问题。