ACM国际大学生程序设计竞赛及练习题库

ACM国际大学生程序设计竞赛

  ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。

 

背景和历史

  竞赛的历史可以上溯到1970年,当时在美国德克萨斯A&M大学举办了首届比赛。当时的主办方是the Alpha Chapter of the UPE Computer Science Honor Society。作为一种全新的发现和培养计算机科学顶尖学生的方式,竞赛很快得到美国和加拿大各大学的积极响应。1977年,在ACM计算机科学会议期间举办了首次总决赛,并演变成为目前的一年一届的多国参与的国际性比赛,迄今已经举办了35届。

  最初几届比赛的参赛队伍主要来自美国和加拿大,后来逐渐发展成为一项世界范围内的竞赛。特别是自1997年IBM开始赞助赛事之后,赛事规模增长迅速。1997年,总共有来自560所大学的840支队伍参加比赛。而到了2004年,这一数字迅速增加到840所大学的4109支队伍并以每年10-20%的速度在增长。

  1980年代,ACM将竞赛的总部设在位于美国德克萨斯州的贝勒大学。

  在赛事的早期,冠军多为美国和加拿大的大学获得。而进入1990年代后期以来, 俄罗斯和其它一些东欧国家的大学连夺数次冠军。来自中国大陆的上海交通大学代表队则在2002年美国夏威夷的第26届、2005年上海的第29届和2010在哈尔滨的第34届的全球总决赛上三夺冠军,浙江大学参赛队在美国当地时间2011年5月30下午2时结束的第35届ACM国际大学生程序设计竞赛全球总决赛荣获全球总冠军,成为除上海交通大学之外唯一获得ACM国际大学生程序设计竞赛全球总决赛冠军的亚洲高校。这也是目前为止亚洲大学在该竞赛上取得的最好成绩。赛事的竞争格局已经由最初的北美大学一枝独秀演变成目前的亚欧对抗的局面。

简要规则

  ACM-ICPC以团队的形式代表各学校参赛,每队由3名队员组成。每位队员必须是在校学生,有一定的年龄限制,并且最多可以参加2次全球总决赛和5次区域选拔赛。

  比赛期间,每队使用1台电脑需要在5个小时内使用C、C++、Pascal或Java中的一种编写程序解决7到10个问题。程序完成之后提交裁判运行,运行的结果会判定为正确或错误两种并及时通知参赛队。而且有趣的是每队在正确完成一题后,组织者将在其位置上升起一只代表该题颜色的气球。

  最后的获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。例如:A、B两队都正确完成两道题目,其中A队提交这两题的时间分别是比赛开始后1:00和2:45,B队为1:20和2:00,但B队有一题提交了2次。这样A队的总用时为1:00+2:45=3:45而B队为1:20+2:00+0:20=3:40,所以B队以总用时少而获胜。

  与其它计算机程序竞赛(例如国际信息学奥林匹克,IOI)相比,ACM-ICPC的特点在于其题量大,每队需要5小时内完成8道题目,甚至更多。另外一支队伍3名队员却只有1台电脑,使得时间显得更为紧张。因此除了扎实的专业水平,良好的团队协作和心理素质同样是获胜的关键。

竞赛流程

大赛现场

  1.参赛队伍最多由三名参赛队员组成。

  2.竞赛中至少命题6题,至多命题10题,试题描述为英文,比赛时间为5个小时。

  3.竞赛可以使用的语言:C++、C、Java和Pascal。但final赛只有C/C++;

  4.重点考察选手的算法和程序设计能力,不考察任何Windows编程知识;

  5.选手可携带任何非电子类资料,包括书籍和打印出来的程序等;

  6.评委负责将结果(正确或出错的类型)通过网络尽快返回给选手,除此之外不提供任何额外帮助;

  返回结果:

  1.Accepted. ---通过!(AC)

  2.Wrong Anwser. ---答案错。(WA)

  3.RunTime Error. ---程序运行出错,意外终止等。(RTE)

  4.Time Limit Exceeded. ---超时。程序没在规定时间内出答案。(TLE)

  5.Presentation Error. ---格式错。程序没按规定的格式输出答案。(PE)

  6.Memory Limit Exceeded. ---超内存。程序没在规定空间内出答案。(MLE)

  7.Compile Error. ---编译错。程序编译不过。(CE)

区域和全球决赛

  赛事由各大洲区域预赛和全球总决赛两个阶段组成。各预赛区第一名自动获得参加全球总决赛的资格。决赛安排在每年的3-4月举行,而区域预赛一般安排在上一年的9-12月举行。一个大学可以有多支队伍参加区域预赛,但只能有一支队伍参加全球总决赛。

  全球总决赛第一名将获得奖杯一座。另外,成绩靠前的参赛队伍也将获得金、银和铜牌。而解题数在中等以下的队伍会得到确认但不会进行排名。

形式与评分办法

  竞赛进行5个小时,一般有6—8道试题,由同队的三名选手使用同一台计算机协作完成。当解决了一道试题之后,将其提交给评委,由评委判断其是否正确。若提交的程序运行不正确,则该程序将被退回给参赛队,参赛队可以进行修改后再一次提交该问题。程序运行不正确是指出现以下4种情况之一:

  (1)运行出错(run-timeerror);

  (2)运行超时〔time-limitexceeded);

  (3)运行结果错误(wronganswer);

  (4)运行结果输出格式错误(presentationerror)。

  (5)运行内存溢出( Memory Limit Exceeded);

  竞赛结束后,参赛各队以解出问题的多少进行排名,若解出问题数相同,按照总用时的长短排名。总用时为每个解决了的问题所用时间之和。一个解决了的问题所用的时间是竞赛开始到提交被接受的时间加上该问题的罚时(每次提交通不过,罚时20分钟)。没有解决的问题不记时。美国英语为竞赛的工作语言。竞赛的所有书面材料(包括试题)将用美国英语写出,区域竞赛中可以使用其它语言。总决赛可以使用的程序设计语言包括pascal,c,c++及java,也可以使用其它语言。具体的操作系统及语言版本各年有所不同。

奖励情况

  总决赛前十名的队伍将得到高额奖学金:第一名奖金为12000美元,第二名奖金为6000美元,第三名奖金为3000美元,第四名至第十名将各得到l500美元。除此之外还将承认北美冠军、欧洲冠军、南太平洋冠军及亚洲冠军。

脑力之争

头脑风暴

  竞赛规定每支参赛队伍由三名在校大学生组成,他们需要在规定的五个小时内解决八个或更多的复杂实际编程问题。每队使用一台电脑,参赛者争分夺秒,与其他参赛队伍拼比逻辑、策略和心理素质。

  团队成员将在多名专家裁判的严格督察下通力合作,对问题进行难度分级、推断出要求、设计测试平台并构建软件系统,最终成功地解决问题。对于一名精通计算机科学的学生而言,有些问题只是精确度的问题;而有些则需要学生了解并掌握高级算法;还有一些问题是普通学生无法解决的,不过对于那些最优秀的学生而言,这一切都不在话下。

  竞赛的评判过程十分严格。我们分发给学生的是问题陈述,而不是要求须知。他们会收到一个测试数据实例,但无法获得裁判的测试数据和接受标准方面的信息。若每次提交的解决方案出现错误,就会受到加时惩罚。毕竟,在处理顶级计算问题时,谁也不想浪费客户的时间。在最短的累计时间内,提交次数最少、解决问题最多的队伍就是最后的胜利者。

IBM的承诺

  在IBM所开展的众多学术活动中,赞助ACM-ICPC赛事占有十分重要的位置。此举旨在促进开放源代码编程技巧的发展,培养更具竞争力的IT工作人员,从而推动全球创新和经济增长。

关于ACM

  ACM(美国计算机协会)是一家科教性质的协会,旨在联合全球计算机领域的教学人员、研究人员和从业人员,开展行业交流活动、共享资源和解决业界难题。凭借绝对的领导地位,ACM始终致力于推行最高行业标准,表彰杰出技术人才,加强计算机行业的整体队伍建设。ACM通过为成员提供终生学习、职业发展及与专业人士联谊的机会,支持其在各自的专业领域取得长足进步。

ICPC2008简介

IBM的承诺

  第32届ACM国际大学生程序设计竞赛(ICPC)又名“脑力之争”(BattleoftheBrains),其举办宗旨是为大学生提供一个集中的展示舞台,表现他们在五个小时的指定时间内解决实际电脑编程问题的超强能力。

  2007年9月-12月全球已经有来自83个国家1,821所大学的6,700支参赛队伍参加了预赛(分213个赛场举行),预赛结束后仅有100支参赛队伍闯入全球总决赛。全球总决赛将于2008年4月6日-10日在位于加拿大阿尔伯塔省的班夫温泉城堡饭店举行。

  这一年度盛事由下列几级比赛组成:

  本地竞赛——各大学挑选参赛队伍,或在本校范围内举办比赛选拔一支或几支队伍代表学校参加下一级比赛。选拔范围为全球30多万名计算机专业的学生。

  区域预赛(2007年9月-12月)——今年的参赛队伍增加了10%(其中不包括参加初赛的队伍),从去年的6,099支增加到了6,700支。这些队伍代表来自六大洲83个国家的1,821所大学。

  全球总决赛(2008年4月6日-10日,加拿大阿尔伯塔省的班夫温泉城堡饭店)——为庆祝阿尔伯塔大学成立一百周年,一百(100)支决赛队伍将代表六大洲的顶级大学参赛,角逐奖品、奖金和展示权。

  ICPC2011简介

  第36届ACM国际大学生程序设计竞赛中国大陆共有5个赛区,分别为大连赛区(大连理工大学承办)、上海赛区(复旦大学承办)、北京赛区(北京邮电大学承办)、成都赛区(成都东软学院承办)和福州赛区(福建师范大学承办)。

  截至目前,大连、上海、北京、成都的网络预选赛已经结束;大连赛区区域赛也于9月25日在大连落下帷幕。大连赛区共有来自一百多所院校的155支队伍参加角逐,比赛中获得冠军的为上海交通大学的“史诗”队,获得金银铜牌的院校、队伍如下:

  

学校排名 学校名称 队伍排名 队伍名
1 上海交通大学 1 史诗 (team29)
2 清华大学 2 DivineRapier (team4)
* 清华大学 3 machinator (team88)
3 中山大学 4 SYSU_Metalgarurumon (team94)
4 复旦大学 5 FDU_BGM (team5)
5 浙江工业大学 6 小和山职业技术学院 (team33)
6 电子科技大学 7 成电-宙斯 (team18)
7 北京大学 8 巴斯特 (team14)
北京大学 9 若爆了 (team27)
8 国防科技大学 10 阿蕾泡菜 (team52)
北京大学 11 丽华 (team106)
北京大学 12 OSU (team48)
9 武汉大学 13 旅途 (team25)
电子科技大学 14 成电-阿波罗 (team57)
中山大学 15 SYSU_HolyAngemon (team11)
中山大学 16 SYSU_AtlurKabuterimon (team51)
复旦大学 17 FDU_Sanguosha (team43)
北京大学 18 OSU安格瑞扣得死 (team121)
10 北京航空航天大学 19 北航-1 (team16)

 

acm练习题库:

http://www.programfan.com/acm/

http://acm.nyist.net/JudgeOnline/problemset.php

http://acm.hdu.edu.cn/

你可能感兴趣的:(C/C++,ACM,acm,acm大赛,国际大学生程序设计,开发比赛)