数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 2774|回复: 3

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

[复制链接]
发表于 2004-4-4 11:33:58 | 显示全部楼层 |阅读模式
ACM国际大学生程序设计竞赛竞赛简介

ACM国际大学生程序设计竞赛(ACM/ICPC:ACM InternationalCollegiate Programming
Contest)是由国际计算机界历史悠久、颇具权威性的组织ACM学会(Association
for Computing Machinery,美国计算机协会)主办,是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨在使大学生运用计算机来充分展示自已分析问题和解决问题的能力。该项竞赛从1970年举办至今已历27届,因历届竞赛都荟萃了世界各大洲的精英,云集了计算机界的“希望之星”,而受到国际各知名大学的重视,并受到全世界各著名计算机公司的高度关注,成为世界各国大学生最具影响力的国际级计算机类的赛事。

??此项赛事的主办目的不单是培养参赛选手的创造力,团队合作精神以及他们在软件程序开发过程中的创新意识,同时也是检测选手们在压力下进行开发活动的能力。可以说,ACM国际大学生程序设计竞赛是参赛选手展示计算机才华的广阔舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。该项竞赛分区域预赛和国际决赛两个阶段进行,各预赛区第一名自动获得参加世界决赛的资格,世界决赛安排在每年的3-4月举行,而区域预赛安排在上一年的9-12月在各大洲举行。从1998年开始,IBM公司连续5年赞助该项赛事的世界决赛和区域预赛。这项比赛是以大学为单位组队(每支队伍由教练、3名正式队员,一名后备队员组成)参赛。ACM/ICPC的区域预赛是规模很大,范围很广的赛事。仅在2002年参加区域预赛的队伍就有来自6个洲的68个国家(地区),1325所大学的2866支代表队,他们分别在30个赛区中进行比赛,以争夺全球总决赛的68个名额,其激烈程度可想而知。2003年第28届ACM/ICPC亚洲赛区预赛共设10个赛站:北京、广州、Aizu(日本)、汉城、高雄、马尼拉、达卡、KOLKATA-ROORKEE(印度)、孟买(印度)、德黑兰(伊朗)等。??
   
       中国内地从1996年开始举办已历时七届,前六届赛区设在上海,由上海大学主办。2002年分设北京和西安赛区,分别由北京清华大学和西安交通大学主办。全国内地高校在27届竞赛中取得了很好的成绩,上海交大、浙江大学、中山大学和北京清华大学分别在北京、日本、高雄和西安赛区获冠军出线,复旦大学、华东理工大学分别在马尼拉、坎普(印度)赛区获亚军出线。

       2003年3月在美国好莱坞的全球总决赛中,北京清华大学、上海交大和广州中山大学都取得了银牌,并分别获得了第五,六,八名。?2003年中国内地设立两个赛区:清华大学和中山大学。

 楼主| 发表于 2004-4-4 11:35:20 | 显示全部楼层
竞赛介绍

一、赛事整体情况
    ACM/ICPC(国际大学生程序设计竞赛)是由ACM(Association for Computing Machinery,美国计算机协会)组织的年度性竞赛,始于1970年,是全球大学生计算机程序能力竞赛活动中最有影响的一项赛事。ACM/ICPC采用赛区选拔的方式产生参加世界决赛学校的资格,2002年,来自全球超过25个地区1100多所大学的2000多支队伍参加了第27届ACM/ICPC的赛区竞赛;在2003年3月,来自世界各地的66支队伍,200多名选手参加了洛杉矶总决赛的角逐。可以说,ACM国际大学生程序设计竞赛是参赛选手展示计算机才华的广阔舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。在过去十几年中,世界著名信息企业APPLE、AT&T、MICROSOFT和IBM分别担任了竞赛的赞助商。
    中国大陆高校从1996年开始参加ACM/ICPC亚洲预赛,前五届大赛的中国赛区设在上海,由上海大学主办。清华大学是中国较早参加国际大学生程序设计竞赛的大学之一。在已经参加的竞赛中,清华大学均获得出席世界总决赛的资格,在第22、23、24、25、26,27届世界总决赛中,清华大学分别获得第7名、第11名、第4名、第11名、第4名和第5名的佳绩。
二、北京赛区情况
    2002年ACM/ICPC亚洲预赛赛区移至北京。鉴于国际大学生程序设计竞赛对计算机教育的推动作用和在人才培养方面的重大效益,清华大学将此项赛事列为世界一流大学建设过程中的重点学生科技竞赛活动来组织实施,并承办了2002年第二十七届亚洲预赛北京赛区的比赛,这也是清华大学首次承办如此大规模、高水平的国际大学生科技赛事。学校对于成功举办本次竞赛高度重视,调集各方面的优势资源,在清华同方股份有限公司的大力支持下,认真筹备,精心组织,时任清华大学副校长顾秉林院士亲自担任本届竞赛的组织委员会主任,党委副书记杨振斌老师担任竞赛组委会副主任。组委会同时聘请非高校信息技术领域的多位院士担任评审委员会的顾问。包括北大、复旦、人大、天津大学、南开大学、北航、北邮、哈工大、上交大、同济、吉林大学、四川大学、兰州大学等全国20多个省市地区的近50所国内重点大学和日本东京大学在内的95支参赛队报名了参加本次竞赛,参赛选手超过400人。为鼓励参赛选手的积极性,组委会同时进行了“AMD-清华同方杯”2002大学生程序设计竞赛,并单独设奖。最后上海交通大学获得北京赛区第一名,并取得了参加总决赛的资格。
    ACM/ICPC作为一项影响深远的国际赛事,包括中央电视台、北京电视台在内的国内十余家大型电视和平面媒体都对此次比赛进行了报道。其中中央电视台还在午间黄金时段为此次比赛制作了专题新闻。此外,中国青年报也在显著位置针对此次大赛进行了报道。目前,ACM/ICPC正在引起国内外高校的普遍关注,在清华大学、上海大学、西安交通大学,以及很多国外主办高校的共同努力下,竞赛规模和水平不断提高,参加此项比赛已不再是少数大学的专利,越来越多的高校开始组建自己的专业竞赛队,并积极参赛。由于参赛队过多,很多地区不得不实行三级赛制,从而选拔最优秀的队伍参加赛区赛,再由赛区赛冠军参加世界总决赛。事实表明,ACM/ICPC已成为国内外各高校展示实力、加强交流、相互促进、共同发展的广阔舞台。
    竞赛的参赛选手都是大学中的计算机顶尖人才,高校之间教师以及参赛选手之间的交流将使其成为展示大学生计算机才华的良好机会和参赛学校加强合作、增进友谊的桥梁。相信本次竞赛的成功举办必将对中国的计算机教育事业起到巨大的推动作用。让我们共同努力,将竞赛办成中国计算机教育界的一次盛会,为中国计算机教育事业的发展做出更大贡献!


 楼主| 发表于 2004-4-4 11:42:47 | 显示全部楼层
ACM竞赛介绍与策略
原创:怒火之袍  2002年10月22日  



一、ACM竞赛介绍及规则

    ACM/ICPC(国际大学生程序设计竞赛)是由ACM(Association for Computing Machinery,美国计算机协会)组织的年度性竞赛,始于1970年,是全球大学生计算机程序能力竞赛活动中最有影响的一项赛事。ACM/ICPC采用赛区选拔的方式产生参加世界决赛学校的资格,2001年,来自全球超过25个地区1141所大学的2362支队伍参加了第26届ACM/ICPC的赛区竞赛。在2002年3月,来自世界各地的约60支队伍,200多名选手参加了夏威夷总决赛的角逐。可以说,ACM国际大学生程序设计竞赛是参赛选手展示计算机才华的广阔舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。在过去十几年中,世界著名信息企业APPLE、AT&T、MICROSOFT和IBM分别担任了竞赛的赞助商。中国大陆高校从1996年开始参加ACM/ICPC亚洲预赛,前五届ACM/ICPC亚洲区选拔赛在上海设有赛区,由上海大学主办。2002年,第六届ACM/ICPC亚洲预赛将该在北京设赛区,由清华大学主办。本次竞赛将于2002年10月在清华园拉开帷幕,预计将有超过60所国内外著名大学的上百支队伍参加本次竞赛(这也是北京工业大学首次参加此项赛事)。

    ACM竞赛规定,教练是参赛队伍所代表学校的正式教师,每支队伍最多由三名参赛队员组成,每支队伍中至少有两名参赛队员必须是未取得学士学位或同等学历的学生,取得学士学位超过两年,或进行研究生学习超过两年的学生不符合参赛队员的资格,任何参加过两次决赛的学生不得参加地区预赛或者世界决赛。
  竞赛中至少命题6题,至多命题10题,比赛时间为5个小时,参赛队员可以携带诸如书、手册、程序清单等参考资料,试题的解答提交裁判称为运行,每一次运行会被判为正确或者错误,判决结果会及时通知参赛队伍,正确解答中等数量及中等数量以上试题的队伍会根据解题数目进行排名,解题数在中等数量以下的队伍会得到确认但不会进行排名,在决定获奖和参加世界决赛的队伍时,如果多支队伍解题数量相同,则根据总用时加上惩罚时间进行排名,总用时和惩罚时间由每道解答正确的试题的用时加上惩罚时间而成。每道试题用时将从竞赛开始到试题解答被判定为正确为止,期间每一次错误的运行将被加罚20分钟时间,未正确解答的试题不记时,地区预赛可以使用的语言包括C/C++和Java,每支队伍使用一台计算机,所有队伍使用计算机的规格配置完全相同。(竞赛具体的软件环境可能根据赞助商的变化而变)

二、关于竞赛的题型分析

    Hal Burch通过在1999年春季的分析得出了这样的结论,竞赛的程序设计一般只有16种类型,它们分别是:

    Dynamic Programming (动态规划)
    Greedy (贪心算法)
    Complete Search (穷举搜索)
    Flood Fill (不知该如何翻译)
    Shortest Path (最短路径)
    Recursive Search Techniques (回溯搜索技术)
    Minimum Spanning Tree (最小生成树)
    Knapsack (背包问题)
    Computational Geometry (计算几何学)
    Network Flow (网络流)
    Eulerian Path (欧拉回路)
    Two-Dimensional Convex Hull (不知如何翻译)
    BigNums (大数问题)
    Heuristic Search (启发式搜索)
    Approximate Search (近似搜索)
    Ad Hoc Problems (杂题)

    很少有人能真正掌握这其中绝大部分的方法,而对于一些包含了这些方法组合与循环的具有挑战性的综合问题,多数选手都无能为力,因为竞赛中的很多试题都需要选手当场作出分析,而不是套用固定的解题格式,这是竞赛的困难所在,也是它的魅力所在。

三、竞赛准备

    ACM竞赛不要求使用某一种特定的语言,所以各个队伍可以根据语言的特点和自己的特长选择,如果对语言的原理语法和特点均能做到成竹于胸、滥熟于心,在比赛的过程中就可以大大缩短调试的时间,从而获得优势。

    然而编程之道就如武学之道,语言只是各门各派的武功招式,算法和数据结构则好比内功心法和武学原理。内力深厚,任何招式到了手上都能够化腐朽为神奇;掌握了武学原理,更能做到无招胜有招。选手在竞赛中最重要的素质,正体现于对算法和数据结构的掌握和理解上,通过对经典问题的分析,掌握各种算法的应用范围和数据结构的作用与具体实现,是每个选手在平时学习中的重点所在。

四、竞赛策略

    临近比赛,在实力上已经难有质的提高,这时我们不妨将注意力转移到竞赛技巧方面,做不成武学道师也学个韦小宝。在ACM竞赛中,一般来说能成功解决半数或以上题目的队伍已经是相当优秀的,解决所有问题近乎天方夜潭,也就是说无论你的实力如何,都还有很大的改进余地,这其中比较重要的就是竞赛的策略。

    (1)分工的问题:

    团队的配合十分重要,三个队员之间的合理分工可以大大改进解题的效率,根据队员的不同特点,不同的队伍可以采用不同的分配方式,其间一些细节的处理需要三个人有很好的默契。

    (2)算法的选择:

    在所有可行的算法当中,我们选择的应该是最可行的方法,而不是最高明的方法,这是竞赛与解决问题的一个重要区别,按照熟悉的程度由高到低选择一个算法,通过计算算法的时间和空间复杂度(在必要的情况下)和特殊的测试数据找出一切使该算法不成立的理由,如果找不到就确定该算法并选用相应的数据结构。在确定思路的时候注意比较常见的思维方式分析,比如逆向的分析,对称的分析等等。

    (3)程序的编写:

    最好首先编写输入和输出的部分,然后逐步细化,一个部分一个部分地填充调试,其间通过适量的注释来刻画程序的逻辑结构和特殊的技巧。在完成全部代码后用一般的测试数据验证代码的正确性,然后处理特殊的情况和边界问题,试图尽可能地找出错误的情况并加以改正。关于程序的优化主要考虑的是最坏情况下所用的时间是否满足要求,优化的程度以题目要求为准,足够即可,尽量避免使用指针和动态分配,在空间允许的情况下一律采用静态分配。

    (4)调试中的问题:

    调试中会遇到的许多问题需要在事前有所准备并定出总体设计,当然具体的情况还要临场分析,考虑的方面包括程序中的BUG,算法的正确性和数据结构的合理性,什么时候该放弃这个问题,什么时候该返回到先前放弃的问题,是否需要做到或已经做到足够的优化等等。所有关于调试的输入输出都不要删除,将它们注释起来即可。

    (5)竞赛中的杂题处理

    在竞赛中有时会出现一些新颖的题型,解决它们的算法很难归到经典的算法中去,每个这类的题都有自己鲜明的特点,对于它们根本没有一般的解法。对于这样的挑战,一个新颖的数据结构或一套特殊的循环或判断常常是必须的。解决这种问题的关键在于仔细地阅读题目的叙述,灵感经常来自于将叙述的逻辑条理整理得十分清楚之后,同样,对这类题的优化也是需要的,至少需要避免过多的循环嵌套。

五、编程与竞赛

    学习编程并不是为了参加竞赛,竞赛对于多数选手的意义还是在于参与,以及在备战过程中对自己的锻炼和提高。在这一点上,ACM竞赛和其它一系列竞赛是一样的,只是它的影响力和规模大些罢了,所以笔者希望对编程有兴趣的同学都能够关注竞赛,即使不参加

发表于 2004-4-4 20:31:40 | 显示全部楼层
你要参加吗?
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2025-5-12 02:37 , Processed in 0.052804 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表