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 ...
随机推荐
- 深入理解Java:内部类
什么是内部类? 内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public ...
- 让游戏以高性能GPU(独立显卡)运行
在EXE中导出全局变量: N卡: extern "C" { __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001 ...
- npoi批量导入实现及相关技巧
批量导入功能对于大部分后台系统来说都是不可或缺的一部分,常见的场景-基础数据的录入(部门,用户),用批量导入方便快捷.最近项目需要用到批量导入,决定花点时间写套比较通用的Excel导入功能.经过考虑, ...
- Win10 UWP 开发学习代码(不断更新)
页面之间跳转(传值) string txt = "Spring Lee"; this.Frame.Navigate(typeof(BlankPage1),txt); 另一个页面接收 ...
- 【USACO 2.3】Money Systems(dp)
v种货币,求有多少种组成和为n. dp[i][j]表示前i种货币价格为j有多少种方案,dp[i][j]+=dp[i-1][j-c]. http://train.usaco.org/usacoprob2 ...
- Python笔记(3)迭代器与生成器
参考自:http://www.cnblogs.com/huxi/category/251137.html 迭代器 迭代器是访问集合内元素的一种方式,他不能倒退只能一直迭代下去.可以写到for循环in后 ...
- Codeforces Round #377 (Div. 2) B. Cormen — The Best Friend Of a Man(贪心)
传送门 Description Recently a dog was bought for Polycarp. The dog's name is Cormen. Now Polycarp has ...
- PDFobject插件使用,PDF在线查看插件
1.引入插件JS <script type="text/javascript" src="PDFobject.js"></script> ...
- Windows的基本内容
1, 进程间通信:是指进程间进行信息交换 低级方式:信号量通信(可以交换的信息量少的时候) 高级通信方式(3种):1.共享存储器系统(剪贴板) 2.消息传递系统(进程间的数据交换以消息(message ...
- sphinx 配置文件全解析
sphinx的配置文件是在配置的时候最容易出错的了: 我们先要明白几个概念: source:数据源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一 ...