浅谈大学参加程序竞赛
一、程序竞赛的类别
进入大学,意味着不必像高中那样每天要做很多的题,尽管是全日制教学,实际上你还是会有很多的课余时间,比如周末,比如没有课的下午,比如每天晚上寝室关门前都是你的课余时间。
作为计算机系的学子,可能很多学校都会要求有参加竞赛经历。那么作为计算机系的在大学你可以参加那些相关的竞赛呢?
根据我的经历,大致有以下竞赛可以参加:
-
学院组织的院级程序竞赛。
参加学院组织的程序竞赛可以让你从同年级的人中脱颖而出,有机会被学院选中进行重点培养,作为程序竞赛储备人才以参加其他的程序竞赛。竞赛时间不详(每个学校的竞赛时间都不一样,就算是同一个学校,可能也会因为老师的工作而变动) -
学校组织的校级程序竞赛。
参加学校组织的程序竞赛,和参加学院组织的程序竞赛是一样的,拿到第一名的意义就是你成功的从同年级校友中脱颖而出,在这样的比赛中让学校领导看到你的光芒。不是所有的学校都会组织程序竞赛,很多学校都是计算机系学院组织选拔人才,学校不会组织。或者直接是学校组织。不管谁组织,目的都是为后面的省级程序竞赛选拔人才。竞赛时间和院级的程序竞赛一样。 -
省级的程序竞赛。
当你从学院或者学校组织的程序竞赛中崭露头角后,会进行规律的训练,以参加省级的程序竞赛。一般来说省级的程序竞赛就是ACM程序竞赛的预选赛。在省级的程序竞赛中,你可以有机会见识同省其他高校学生的程序设计水平,如果你擅长交流还可能交到其他学校的编程爱好者。在省级程序竞赛中斩获奖励的话,在以后找工作的过程中也会有不错的砝码。当你在省级竞赛中成功击败其他对手,你便有机会参加ACM大学生程序设计竞赛。竞赛时间可以关注各省的计算机协会官网。一般官网都会发布竞赛公告。 -
ACM大学生程序设计竞赛。
这个比赛是国际性的,不过分区域。赛事由各大洲区域预赛和全球总决赛两个阶段组成。决赛安排在每年的3-5月举行,而区域预赛一般安排在上一年的9-12月举行。原则上一个大学在一站区域预赛最多可以有3支队伍,但只能有一支队伍参加全球总决赛。作为中国的大学生,参加的当然是亚洲赛区的预赛选拔啦!
竞赛进行5个小时,一般有7道或以上试题,由同队的三名选手使用同一台计算机协作完成。程序判定结果有如下7种:
a、Accepted. ——通过!(AC)
b、Wrong Answer.——答案错。(WA)
c、Runtime Error.——程序运行出错,意外终止等。(RE)
d、Time Limit Exceeded. ——超时。程序没在规定时间内出答案。(TLE)
e、Presentation Error. ——格式错。程序没按规定的格式输出答案。(PE)
f、Memory Limit Exceeded. ——超内存。程序没在规定空间内出答案。(MLE)
g、Compile Error. ——编译错。程序编译不过。(CE) -
团体程序设计天梯赛。
团体程序设计天梯赛是中国高校计算机大赛的竞赛版块之一,赛旨在提升学生计算机问题求解水平,增强学生程序设计能力,培养团队合作精神,提高大学生的综合素质,同时丰富校园学术气氛,促进校际交流,提高全国高校的程序设计教学水平。比赛重点考查参赛队伍的基础程序设计能力、数据结构与算法应用能力,并通过团体成绩体现高校在程序设计教学方面的整体水平。竞赛题目均为在线编程题,由搭建在网易服务器上的PAT在线裁判系统自动评判。难度分3个梯级:基础级、进阶级、登顶级。以个人独立竞技、团体计分的方式进行排名。
程序设计涉及知识点
初期:
一.基本算法:
- 枚举.
- 贪心.
- 递归和分治法.
- 递推.
- 构造法.
- 模拟法.
二.图算法:
- 图的深度优先遍历和广度优先遍历.
- 最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)
- 最小生成树算法(prim,kruskal)
- 拓扑排序
- 二分图的最大匹配 (匈牙利算法)
- 最大流的增广路算法(KM算法).
三.数据结构.
- 串
- 排序(快排、归并排(与逆序数有关)、堆排)
- 简单并查集的应用.
- 哈希表