算法学习:最富盛名的程序设计竞赛

世界级规模–GCJ

Google Code Jam是一项由Google主办的国际程序设计竞赛。该项赛事始于2003年,旨在帮助Google发掘潜在的工程领域顶级人才。比赛内容包括一系列的算法问题,参赛者必须在指定时间内解决。参赛者允许使用任意自选编程语言和开发环境来解答问题。 —维基百科
Google Code Jam,共四轮比赛,一轮初赛,两轮复赛,还有最后的决赛。提交的程序并不在服务器上执行,所以需要提交程序和本地执行结果。测试的数据是开放的, 并且分为small和big两部分, small主要是用来验证程序的正确性,而big则是考验程序的时间,空间复杂度。

历史最悠久–ACM-ICPC

ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。
ACM-ICPC以团队的形式代表各学校参赛,每队由3名队员组成。每位队员必须是在校学生,有一定的年龄限制,并且最多可以参加2次全球总决赛和5次区域选拔赛。
比赛期间,每队使用1台电脑需要在5个小时内使用C、C++、Pascal或Java中的一种编写程序解决7到11个问题。程序完成之后提交裁判运行,运行的结果会判定为正确或错误两种并及时通知参赛队。而且有趣的是每队在正确完成一题后,组织者将在其位置上升起一只代表该题颜色的气球。
最后的获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。

向高排名看齐–TopCoder

这个网站可以说是一个程序设计比赛的网站,但是题型,比赛形式跟ACM/ICPC极不相同。该网站把中国纳入其赛区,大家可以上去那里跟来自全世界的程序员(事实上大多数也是大学生)进行更直接的交流,可能也是ACM/ICPC练兵的好地方吧。
该网站每个月都有两到三次在线比赛,根据比赛的结果对参赛者进行新的排名。参赛者可根据自己的爱好选用Java, C++, C#, VB或python进行编程。参赛者须在1小时15分钟的时间内完成三道不同难度的题目,每道题完成的时间决定该题在编程部分所得的分数。而比赛可分为三部分:Coding Phase, Challenge Phase和System Test Phase,比ACM/ICPC多了Challenge Phase,这部分是让参赛者浏览分配在同一房间的其他参赛者的源代码,然后设法找出其中错误,并提出一个测试参数使其不能通过测试。如果某参赛者的程序不能通过别人或系统的测试,则该参赛者在此题目的得分将为0。关于其比赛的具体规则,详看该网站上的公告。
以上信息主要针对TopCoder公司举办的算法竞赛部分,而实际上远不只于此。
TopCoder是一个面向平面设计师和程序员的网站,它采用比赛、评分、支酬等方式吸引众多平面设计师和程序员业余工作。由于其主要领域在编程工作上,下面叙述的主要内容均在编程方面 。

面向中学生的信息学奥赛–IOI

国际信息学奥林匹克竞赛(International Olympiad in Informatics,IOI),是面向中学生的一年一度的信息学科竞赛。第一届国际信息学奥林匹克竞赛于1989年在保加利亚的布拉维茨举行。
这项竞赛包含两天的计算机程序设计,解决算法问题。选手以个人为单位,每个国家最多可选派4名选手参加(2014年有来自83个国家和地区的311名选手参赛)。参赛选手从各国相应计算机竞赛中选拔。
IOI 是智力与操作计算机能力的竞赛,有很大难度。中国从首届开始,参加了迄今为止全部八届的比赛,取得了优异的成绩。中国队共参赛31人次,全部荣获奖牌,被评为“整体实力最强的队”。
IOI的采用C,C++,Pascal作为参赛的三种程序语言。
这项竞赛包含两天的计算机编程,解决算法问题。选手以个人为单位,每个国家最多能有4名选手。

其他一些算法评测–Online Judge

  1. 北京大学程序在线评测系统–POJ
    POJ 是“北京大学程序在线评测系统”(Peking University Online Judge)的缩写,是个提供编程题目的网站,兼容Pascal、C、C++、Java、Fortran等多种语言。是一个免费的公益性网上程序设计题库,它包含3000多道饶有趣味的程序设计题,题目大部分来自ACM国际大学生程序设计竞赛和各种自行举办比赛的题目,很多题目就反映工作和生活中的实际问题。
  2. 浙江大学程序在线评测系统–ZOJ
    ZOJ是“浙江大学程序在线评测系统”(Zhejiang University Online Judge)的缩写,是一个提供信息学(算法竞赛)题库及程序评测的网站,构建于Linux平台,始建于2002年,兼容Pascal、C、C++等多种语言。2013年9月,为了举行2013年长沙赛区网络赛,进行了服务器升级。
  3. SPOJ
    SPOJ是波兰最为出色的Online Judge之一,界面和谐,题目类型也非常丰富,适合有一定基础的选手练习,对高手而言也是个提高能力的良好平台。
    SPOJ吸引人的地方在于,1)它所提供的编程语言达30种。2)跟大部分的OJ不同,SPOJ题目都是由用户(或管理员)推荐的,特别值得一提的是,当一些低复杂度的算法被发现后,某些题目会相继挂出他们的加强版,这些题目往往能提高大家的个人能力。目前,虽然SPOJ的访问量不能媲美当年的ZOJ和现在POJ,在国内做的人也不算特别多,但它的题目质量确实非常不错,且题库一直都在更新.

其他
杭州电子科技大学 http://acm.hdu.edu.cn 超过2000题,支持C/C++/Pascal/Java
哈尔滨工业大学 http://acm.hit.edu.cn 超过2000题,支持C/C++/Pascal/Java/Fortran
南开大学 http://acm.nankai.edu.cn 超过1000题,支持C/C++/Pascal/Java
吉林大学 http://acm.jlu.edu.cn/joj 超过1000题,支持C/C++/Pascal/Java
福州大学 http://acm.fzu.edu.cn 超过1000题,支持C/C++/Pascal/Java
国外Online Judge
Saratov State University http://acm.sgu.ru 超过400题,支持C/C++/C#/Java/Delphi
University of Valladolid http://uva.onlinejudge.org 超过800题,支持C/C++/Pascal/Java
Ural State University http://acm.timus.ru 超过800题,支持C/C++/C#/Pascal/Java

这些地方都是练习和学习算法的好地方。

你可能感兴趣的:(程序设计竞赛)