国际大学生程序设计竞赛

国际大学生程序设计竞赛

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

在2020 ICPC小米邀请赛中,高三邓明扬、高二陈于思、高一许庭强三位同学组成的“有一说一确实”队伍,在全场101支主要由清华北大等大学生组成的队伍的同场竞技中,经过三位同学现场努力拼搏,最终荣获全场第一名。

国际大学生程序设计竞赛(英文全称:International Collegiate Programming Contest(简称 ICPC))是一项旨在展示中国大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近 40 年的发展,ICPC 已经发展成为全球最具影响力的大学生程序设计竞赛。

2020 ICPC 小米邀请赛是由小米集团赞助 ICPC,联合呈现的一场专门面向中国高校大学生的企业邀请赛,旨在展示和激发中国大学生的专业实力、创新能力以及问题分析解决能力。在经过两轮网络赛激烈角逐后,共有85支队伍脱颖而出进入决赛,同时还有13支2020 ICPC World Final队伍以及3支成绩非常优异的中学生打星队伍共同于2020年11月22日来到决赛现场小米科技园角逐总决赛前十名。

ACM竞赛年度性竞赛,始于1970年, ACM国际大学生程序设计竞赛已经发展成为全球最具影响力的大学生程序设计竞赛,也是全球历史最悠久、规模最大且最负盛名的程序设计竞赛。竞赛提倡创新和团队协作,鼓励学生在构建全新的软件程序时尽情发挥创意,帮助学生检验自己在强压力下的工作能力。是世界各地计算机程序设计者大显身手的舞台,也是世界一流大学展现教育成果的最佳窗口。

参赛规则:

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

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

最后的获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。

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

竞赛特点:

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

2、竞赛中命题10题左右,试题描述为英文,比赛时间为5个小时,前四个小时可以实时看到排名,最后一小时封榜,无法看到排名。

3、竞赛可以使用的语言:Java, C, C++, Kotlin 和Python。

4、重点考察选手的算法和程序设计能力,不考察实际工程中常用的系统编程,多线程编程等等;

5、选手可携带任何非电子类资料,包括书籍和打印出来的程序等,部分赛区会对选手携带的纸质资料做限制。

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

7、每个题目对应一种颜色的气球,通过该题目的队伍会得到对应颜色气球。每道题目第一支解决掉它的队还会额外获得一个“FIRST PROBLEM SOLVED”的气球。

评分标准:

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

1、Accepted. ——通过!(AC)

2、Wrong Answer.——答案错。(WA)

3、Runtime Error.——程序运行出错,意外终止等。(RE)

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

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

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

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

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

赛事意义:

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

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

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

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

ACM-ICPC大赛是一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。

参赛生经验分享:

在准备这个比赛的过程中,能学到很多东西,也感觉到人与人之间的巨大差距。

ACM/ICPC是一个团队协作的比赛,队友之间配合默契显得尤为重要。比赛中所涉及的知识点非常多,不可能做到面面俱到,这需要队伍里每个人都有自己擅长的一方面,大家知识点的并集要能覆盖到比赛的大部分内容,这样的话比赛中就很少能遇到大家都不会的知识点而造成目目相觑的尴尬处境。当然也不是说每个知识点只需要一个人来学,要保证会的知识点里面,每个知识点至少要队里2个人都会,在遇到这种题的情况,一个人想出做法来之后,可以与另一方沟通,两方都觉得可行的时候再写,避免想出假算法。

训练的时候大致分为2步,第一步是个人训练,目的是为了学习新算法,巩固自己的知识点。第二步则是团队训练,目的是为了模拟赛场环境,进行团队磨合,熟悉题目套路。

对于个人训练来说,初期可以多看学习书,熟练之后要有自己的代码模板,对于基础算法,如分治,贪心,动态规划,要有比较深入的了解,后期可以深入了解图论知识,以及各种比较高级的数据结构,数论等。数据结构方面的知识一定要精通,手速一定要快!平时一定要多刷题,可以按专题练习,一定要自己做,先不要看题解。ACM是团体赛,但是要保证自己基础要扎实,最好在某个专题上有一定造诣。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值