[转载]引导C++初学者走进ACM
2007-07-31 09:52 Virus-BeautyCode 阅读(1077) 评论(2) 编辑 收藏 举报原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?BoardID=56&ID=156807
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: 一番宝瓶
*/ 时间: 2007-7-20 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
见于我们C++ 板块里的初学者越来越多, 感觉很多人不管是计算机专业的还算非计算机专业都对C++都很感兴趣,由于学习方式和背景不同,大家的能力也分开了层次,希望一些熟悉C++的朋友能多帮助初学者多多领悟C++的真谛.废话少说,这个帖子主要是给一些初学者介绍一下有关ACM的东东,希望能通过简单的入门,让一些新手也可以领率到正规的编程比赛的快乐。
ACM/ICPC(ACM International Collegiate Programming Contest, 国际大学生程序设计竞赛)是由国际计算机界历史悠久、颇具权威性的组织ACM(Association for Computing Machinery,美国计算机协会)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。该项竞赛从1970年举办至今已历29届,一直受到国际各知名大学的重视,并受到全世界各著名计算机公司的高度关注,在过去十几年中,APPLE、AT&T、MICROSOFT和IBM等世界著名信息企业分别担任了竞赛的赞助商。可以说,ACM国际大学生程序设计竞赛已成为世界各国大学生最具影响力的国际级计算机类的赛事, 是广大爱好计算机编程的大学生展示才华的舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。
当然不要让ACM的知名度让一些初学者不敢去尝试,我们也无需参加什么比赛,只是拿这种正规的比赛题来练练手,引导自己对C++的学习。下面介绍下一些在线的ACM OJ(ACM在线评测系统),做做在线ACM,感觉还是不错的 ^^
UVA :http://acm.uva.es/contest/
西班牙的,号称世界第一OJ
POJ :http://acm.pku.edu.cn/JudgeOnline/contests
北京大学OJ,中国最大OJ
JOJ :http://acm.jlu.edu.cn/joj/contests.PHP
吉林大学OJ,题目比较简单
ZOJ :http://acm.zju.edu.cn/
浙江大学OJ,题目比较多
URAL :http://acm.timus.ru/schedule.aspx
俄罗斯的,数学味浓
SGU :http://acm.sgu.ru/contests.PHP
俄罗斯的,题目很少,但数学味很浓
USACO :http://ace.delos.com/contestgate
美国的,很多oier都在上面训练
SPOJ :https://www.spoj.pl/
排名方式独特,而且支持很多语言
建议有时间的朋友去国内的ACM 在线评测系统,亲切感比较强吧。再说说有关在线答题的东东,题目一般分为几种类型:DP,搜索,图论,模拟,数学,字符串处理,几何及其他等趣味题。选择了题目后,可以点submit提交你的代码,测试系统一般会回应一下几个答复:
Accepted //正确
Compiler Error //编译错误
Wrong Answer //结果错误
Presentation Error //表达格式错误
Runtime Error //运行错误
Time Limit Exceeded //超时
Memory Limit Exceeded //分配内存上限
Others (Output Too Much) //其他错误
除此之外还会给出你的程序代码的大小,运行所用时间和内存使用情况等信息。
题的内容全部为英文,但没有什么复杂的英语语法,看懂很容易,在线评测系统对输入输出的格式要求很严格,所以要特别注意input和output的要求,写完程序后用自己的IDE把题里所给的sample input测试一下结果,和给的sample output是否一致,以确保格式是否正确。
好了,相关的东西先介绍到这里,初学C++的朋友可以先做一些简单的题来接触一下ACM,下面我给了几个自己以前做过的一些题目,因为题目非常简单,希望初学者自己也能感悟一下,因为自己水平一般,还是希望一些高手不要吝啬自己的才华,把自己做过的题目与大家分享,或者帮助初学者分析,愿我们共同学好C++
一番宝瓶
2007.7.20 晨