ACM-ICPC如何起步
刚刚绝定投身ACM-ICPC的同学先要过两关。
第一关:程序设计语言
如果学校有开设相关课程,则省去了很多麻烦。如果没有则可以选择《程序设计导引及在线实践》作为教材。现在的比赛中允许使用的语言相对局限,建议c和c++至少掌握一种。java可以在后面的做题过程中慢慢学习。
其实刚开始只需要掌握语言的基本语法就可以开始做题了。在做题过程中慢慢熟练语言的技巧。
第二关:英语
掌握了程序设计语言之后要开始做题了,发现题目都是英文的读不懂,怎么办?请同学们注意,不要才用上网搜中文翻译或者用软件进行全文翻译的方法,这样英文水平很难提高。要硬着头皮坚持读原版英文题,不会的单词可以查词典或者屏幕取词。这样英文阅读能力会逐渐有所提升。很快就可以脱离词典。
现在可以开始正式的训练了。训练初期,方法非常简单,就是在OJ上找一些简单题做,想获取简单题题号可以百度搜索“某oj简单题”,个人推荐POJ(http://poj.org/)。
训练的过程中要注意如下问题:
1. 写解题报告
解题报告是为同学们的复习提供方便,就像课堂笔记一样。如果不写,有许多做过的题都会忘记,那做题对能力的提高就很小。因为目的是备忘,所以对于自己独立完成的题目可以简写。对于通过参考网上答案来完成的题目要细写。细写的解题报告要包含三部分:问题描述、解决办法、代码。详细程度要达到在自己完全忘记这道题的情况下通过解题报告能够了解题意和解题过程。写了解题报告还不算完,记得定期复习。
2. 写算法描述
做题的时候可能会接触到一些自己没学过的算法。在学习之后,需要用自己容易理解表达方式对算法进行描述,详细程度也是要让自己在完全忘记该算法的情况下能通过它迅速了解算法的原理或流程。同样记得定期复习。
3. 独立思考
做题可能遇到三种情况: 第一,独立思考就能完成,则略写解题报告。第二,需要上网找答案,但是并没有涉及到新算法,则详写解题报告。第三,需要上网找答案且涉及新算法,则详写解题报告,写算法总结。这三种情况中的后两种,即遇到不会做的题时,记得不要太急于上网找答案,先要充分地独立思考。这也是无数大牛强调的,对能力的提升有极大的帮助。但独立思考也要掌握分寸,思考时间过长会身心俱疲且浪费时间。
4. 查找答案
上述第三种情况可能直接看别人的解题报告并不能解决问题,因为解题报告通常只从算法的应用角度进行描述,并不描述算法本身。因此,要学习新算法还要上网搜索该算法的描述来进行学习,可以选择百度百科或者文库。
5. 写代码
写代码的过程中注意变量的命名,函数的抽象,如果时间不是十分紧迫的话,一定要保证程序结构清晰可读性强。因为整洁的代码可以大大提高DEBUG的效率。有些细节的处理可以参考网上别人的代码,学习一些细节处理的小技巧。尤其是第一次学习某个算法的时候,一定要阅读多种别人对该算法实现的代码,选择最适合自己作为以后自己的实现方法。
6. 整理模板
这个的难度要求就比较大,要求同学们做题后从自己的代码中提取那些可复用的部分(别的题也可以用的代码)保存成模板以后使用。先说明一下原因,现场赛可以带纸质资料,总结的模板是可以在比赛中用到的,可提高打代吗的速度和正确性。而别人总结的模板也可以用,但有时会出现用起来不顺手或者功能不全等问题。因此,总结自己的模板是必要的。为了复用性可以对代码做适当修改。注意添加注释说明,详细程度要达到在自己忘了这个模板的用法的情况下能通过说明了解其用法。
总体来说,初期的训练方法就是在OJ做题,通过做题来学习算法和提高各方面能力。当然有机会的要多在实战中锻炼自己。个人不建议单独看书学习算法,因为没有足够题目的强化,算法很容易忘记。
同学们如果有什么问题可以直接在下面提问,我会将普遍问题和答案添加到文章中。
ACM-ICPC如何起步的更多相关文章
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- 【转】ACM/ICPC生涯总结暨退役宣言—alpc55
转自:http://hi.baidu.com/accplaystation/item/ca4c2ec565fa0b7fced4f811 ACM/ICPC生涯总结暨退役宣言—alpc55 前言 早就该写 ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- ACM/ICPC 之 BFS(离线)+康拓展开(TSH OJ-玩具(Toy))
祝大家新年快乐,相信在新的一年里一定有我们自己的梦! 这是一个简化的魔板问题,只需输出步骤即可. 玩具(Toy) 描述 ZC神最擅长逻辑推理,一日,他给大家讲述起自己儿时的数字玩具. 该玩具酷似魔方, ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering
Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 D. Delay Time
Problem D. Delay Time Input file: standard input Output file: standard output Time limit: 1 second M ...
- hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...
- hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...
- hduoj 4715 Difference Between Primes 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4715 Difference Between Primes Time Limit: 2000/1000 MS (J ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
随机推荐
- 禁用datagridview中的自动排序功能
把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...
- 搭建一套自己实用的.net架构(2)【日志模块-log4net】
先谈谈简单的模块,日志.在系统中日志模块是必须的,什么系统日志,操作日志,调试日志.这里用的是log4net. 对log4net还不熟悉的小伙伴们赶快去搜索基础教程哦, 我这里就不温故了. 那么有人要 ...
- jQuery基础课程
环境搭建 搭建一个jQuery的开发环境非常方便,可以通过下列几个步骤进行. 下载jQuery文件库 在jQuery的官方网站(http://jquery.com)中,下载最新版本的jQuery文件库 ...
- 如何设置ASP.NET页面的运行超时时间
全局超时时间 服务器上如果有多个网站,希望统一设置一下超时时间,则需要设置 Machine.config 文件中的 ExecutionTimeout 属性值.Machine.config 文件位于 % ...
- URLDecoder解析url编码
try { strJson = URLDecoder.decode(strJson, "utf-8"); } catch (UnsupportedEncodingException ...
- C#-WinForm-用户控件如何获取父级窗体
1:在父窗体中定义需要在用户控件中用到的控件属性,比如,我要修改一个textbox控件.页面定义这个textbox的属性是:protected System.Web.UI.WebControls.Te ...
- angular作用域分析
angualr作用域 Scope 控制器作用域的继承特性Ⅰ 绑定的数据是变量 单向隔离(兄弟之间互不影响,父子之间单向继承) 父级控制器的数据绑定会影响到子级控制器 前提是子控制器内没有绑定数据 单向 ...
- bc#54 div2
用小号做的div2 A:竟然看错了排序顺序...白白WA了两发 注意读入一整行(包括空格):getline(cin,st) [gets也是资瓷的 #include<iostream> us ...
- php无法创建中文名的文件
需要使用iconv强制转换后才可以.
- myeclipse给项目改了名字,但部署tomcat的项目名还是原来的
如标题所示: 在myeclipse中按F2改了项目名称,之前在tomcat中部署的名称是另一个,再次重新部署,永远是上一个的旧名称 解决办法: 项目点右键-properties-左上角搜索框输入web ...