标签:
教育杂谈 |
分类: 专业综合学习 |
最初几届比赛的参赛队伍主要来自美国和加拿大,后来逐渐发展成为一项世界范围内的竞赛。特别是自1997年IBM开始赞助赛事之后,赛事规模增长迅速。 1997年,总共有来自560所大学的840支队伍参加比赛。而到了2004年,这一数字迅速增加到840所大学的4109支队伍并以每年10-20%的速度在增长。1980年代,ACM将竞赛的总部设在位于美国德克萨斯州的贝勒大学。在赛事的早期,冠军多为美国和加拿大的大学获得。
而进入1990年代后期以来,俄罗斯和其它一些东欧国家的大学连夺数次冠军。来自中国大陆的上海交通大学代表队则在2002年美国夏威夷第26届和 2005年上海举行的第29届全球总决赛上两夺冠军。这也是目前为止亚洲大学在该竞赛上取得的最好成绩。赛事的竞争格局已经由最初的北美大学一枝独秀演变成目前的亚欧对抗的局面。
ACM/ICPC Frequently Asked Question
本文部分具体内容未经考证,部分观点纯属个人观点,不代表官方。请欲报名同学认真阅读全文!
1 什么是ACM?
ACM,全称Association for Computing Machinery,即美国计算机协会,颁发世界计算机领域最高奖——图灵奖(Turing Award)的机构。
2 什么是ACM竞赛?
ACM竞赛是指由ACM协会主办的ACM国际大学生程序设计竞赛(ACM-ICPC或者ICPC,全称是International Collegiate Programming Contest),一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。
3 ACM竞赛的地位?
已经举办了30届的ACM-ICPC是世界上规模最大、历史最长、影响最深的全球性计算机专业竞赛,每年吸引着全世界最著名大学的最优秀的学生参加,已经成为受到学术界、企业界共同认可的大学生程序设计竞赛。在中国大陆,ACM竞赛在大多数综合性大学和理工类大学得到非常高的重视,有着广泛的群众基础,已经成为最有影响力的学科竞赛。近年来国内实力最强的学校有上交、清华、复旦、中山、浙大、北大,他们每年都在亚洲赛区预赛和全球总决赛中有着出色的表现,使ACM竞赛形成了现在“中国vs东欧”的格局。
4 什么人能够参加ACM竞赛?
ACM-ICPC规定高中毕业后5年以内的学生可以参加ACM竞赛(详见ACM竞赛规则),对专业没有限制,也就是大一到研一。北邮历届参赛队员为大三和大四的学生。
5 ACM竞赛题目是什么样的?
ACM竞赛的题目类似中学信息学奥林匹克竞赛的题目,一道题目的描述分为Description,Input,Output三部分,分别对题目内容,输入数据格式,输出数据格式提出要求。另外比赛题目使用英文描述。大量例题可以参见首页《网上资源推荐》一文中推荐的各大在线评测系统的题库。
6 ACM竞赛形式是什么样的?
ACM竞赛为现场比赛,它以三人为一队的形式在规定的5小时里对给出的8~10道题在一台计算机上完成,最终以完成题数多者、或在完成题数相同时用时和罚时最少者为胜者。(详见ACM竞赛规则)
7 ACM竞赛赛制是什么样的?
ACM竞赛分为各大洲的各赛点的预赛和世界总决赛,在各赛点预赛拿到出线名额的队伍可以参加世界总决赛。亚洲赛区包括十几个赛点,如大陆,台湾,日本,韩国,印度,伊朗等拥有至少一个赛点,大陆从2005年开始赛点增加到三个。一个学校的队伍可以参加所在大洲的任何一个站点的预赛。由于近年中国大陆参赛队伍数量急剧增加,大陆的赛点都在正式比赛前举办网络预赛决定一所学校能否参加和可以派几支队参加该赛点的现场比赛。按照北邮的条件和实力,每年可以向各国内赛点派一支队伍参加现场比赛。(详见ACM竞赛规则)
8 ACM竞赛使用什么程序设计语言解题?
现在以C/C++和java为主,pascal已经逐渐淘汰。
9 ACM竞赛用机及编程环境是什么样的?
ACM现场比赛使用普通的PC机,操作系统主要为Linux,编译器采用G++等标准编译器。日常训练中,我们在2000/XP系统下使用Dev-C++。
10 学校对参加ACM竞赛有什么鼓励措施?
在计算机学院,学院对ACM竞赛参赛及获奖同学有一定保研加分。
11 ACM竞赛难度如何?
作为大学生程序设计的全球最高赛事,被国内外各著名大学视为显示学校实力的第一赛事,同时吸引着最优秀的学生,所以水涨船高,ACM竞赛的难度仍然在不断提高,这是其他竞赛不能比拟的。由于国内传统强队每年招收大量中学信息学竞赛保送生,使国内赛点比赛的激烈程度不断上升。对于一个拥有良好数学基础,已经掌握一门程序设计语言和一定数据结构和算法知识的学生,要想在ACM竞赛中获得成绩,仍然需要半年以上的高强度封闭式训练。参赛机会少,投入训练时间大,获奖难度高正式ACM竞赛的特点。
12 ACM竞赛相比较其他竞赛,例如数学建模竞赛,软件开发竞赛的区别是什么?
ACM竞赛不是数学建模竞赛,虽然在解题中构建数学模型是重要的一个分析问题的步骤,但参照经典模型,选择和组合出合适的算法,进而编程实现才是ACM竞赛解题的核心。ACM竞赛不是软件开发竞赛,其解决的问题不是应用开发,而是一些抽象出来的形式化问题。
13 参加ACM竞赛需要哪些方面的知识?
扎实的数学功底是提高ACM竞赛能力的基础,这里的数学主要包括离散数学,组合数学知识和逻辑推理能力。程序设计能力,熟练掌握一门程序设计语言,如C语言,解题只会用到面向过程的程序设计知识,不涉及面向对象的内容。另外,使用标准函数库还有其他编程技巧也需要掌握。数据结构和算法知识是ACM竞赛中最直接涉及到的专业知识,其考察范围远远大于课内所学,涉及排序,图论,数论,组合,字符串等多个方面。另外参加ACM竞赛需要阅读英文题目,需要与队友良好的沟通,需要熟悉比赛的上机环境,熟悉比赛规则比赛策略,当然良好的心理素质有时候直接影响着一支队伍在比赛中的发挥。
14 参加ACM竞赛需要怎么准备?
竞赛的准备可以分为个人准备和组队准备两个阶段。在前一个阶段中,需要自己通过看书看文档看程序补充数学和算法知识,更重要的是到在线答题网站练习大量题目。参加讨论,参加网上的练习赛也是较好提高手段。在组队后还要根据每个队员的特点进行团队配合的联系。
15 准备ACM竞赛有哪些推荐的书籍?
数学方面:《组合数学》清华有一本,还有一本国外编的。《具体数学》英文版,讲述计算机科学涉及到的数学知识。
算法方面:《算法导论》MIT教材。
竞赛方面:《算法艺术与程序设计竞赛》刘汝佳。
另外高中信息学奥林匹克竞赛的书籍也可以使用。网上还有一些电子书和文档,我们会尽快整理出来放到集训队FTP上。
16 ACM竞赛常用的练习网站有哪些?
请参见首页《网上资源推荐》一文
17 如何进入北邮ACM集训队代表北邮参赛?
北邮参加ACM竞赛由计算机学院房鸣老师负责,在每学年第二学期进行选拔,集训队规模在20人左右,选拔后主要以个人自行训练为主,讨论、培训为辅,在暑假进行集中封闭式集训,完成能力提高,组队等工作,当年9~11月参加中国大陆的2~3个赛点的亚洲区预赛。高中参加过信息学奥林匹克竞赛并获奖的同学,尤其是保送生,如要参赛请尽快与我们联系。
18 北邮ACM集训队的资源有哪些?
主楼912(计算机学院创新实验室)机房是主要的训练活动场所。ACM集训队在计算机学院FTP有存放资料的空间。北邮真情流露BBS的算法与程序设计竞赛版和北邮ACM集训队QQ群是平常讨论的主要空间。集训队主页和北邮人论坛ACM版正在建设中。
19 北邮ACM集训队的训练组队方式?
组队遵循自愿原则,并根据个人水平和赛区参赛要求进行配置,力求在现场比赛取得好成绩。
20 北邮ACM的定位和未来发展?
北邮ACM的定位是把北邮ACM的比赛成绩稳定在赛点预赛二等奖的前列,即10~15名(每场赛点预赛总队伍数60~70)。未来发展方向是建立日趋完善的选拔和训练体系,争取更多的现场比赛名额,提高比赛成绩,在校内宣传ACM竞赛,扩大群众基础,以使我们能够不断发展不落后于其他高校。