ACM-ICPC如何起步

刚刚绝定投身ACM-ICPC的同学先要过两关。

第一关:程序设计语言

如果学校有开设相关课程,则省去了很多麻烦。如果没有则可以选择《程序设计导引及在线实践》作为教材。现在的比赛中允许使用的语言相对局限,建议c和c++至少掌握一种。java可以在后面的做题过程中慢慢学习。
其实刚开始只需要掌握语言的基本语法就可以开始做题了。在做题过程中慢慢熟练语言的技巧。

第二关:英语

掌握了程序设计语言之后要开始做题了,发现题目都是英文的读不懂,怎么办?请同学
们注意,不要才用上网搜中文翻译或者用软件进行全文翻译的方法,这样英文水平很难提高。要硬着头皮坚持读原版英文题,不会的单词可以查词典或者屏幕取词。
这样英文阅读能力会逐渐有所提升。很快就可以脱离词典。

现在可以开始正式的训练了。训练初期,方法非常简单,就是在OJ上找一些简单题做,想获取简单题题号可以百度搜索“某oj简单题”,个人推荐POJ(http://poj.org/)。
训练的过程中要注意如下问题:

1. 写解题报告

解题报告是为同学们的复习提供方便,就像课堂笔记一样。如果不写,有许多做过的题
都会忘记,那做题对能力的提高就很小。因为目的是备忘,所以对于自己独立完成的题目可以简写。对于通过参考网上答案来完成的题目要细写。细写的解题报告要
包含三部分:问题描述、解决办法、代码。详细程度要达到在自己完全忘记这道题的情况下通过解题报告能够了解题意和解题过程。写了解题报告还不算完,记得定
期复习。

2. 写算法描述

做题的时候可能会接触到一些自己没学过的算法。在学习之后,需要用自己容易理解表达方式对算法进行描述,详细程度也是要让自己在完全忘记该算法的情况下能通过它迅速了解算法的原理或流程。同样记得定期复习。

3. 独立思考

做题可能遇到三种情况:
第一,独立思考就能完成,则略写解题报告。第二,需要上网找答案,但是并没有涉及到新算法,则详写解题报告。第三,需要上网找答案且涉及新算法,则详写解
题报告,写算法总结。这三种情况中的后两种,即遇到不会做的题时,记得不要太急于上网找答案,先要充分地独立思考。这也是无数大牛强调的,对能力的提升有
极大的帮助。但独立思考也要掌握分寸,思考时间过长会身心俱疲且浪费时间。

4. 查找答案

上述第三种情况可能直接看别人的解题报告并不能解决问题,因为解题报告通常只从算法的应用角度进行描述,并不描述算法本身。因此,要学习新算法还要上网搜索该算法的描述来进行学习,可以选择百度百科或者文库。

5. 写代码

写代码的过程中注意变量的命名,函数的抽象,如果时间不是十分紧迫的话,一定要保
证程序结构清晰可读性强。因为整洁的代码可以大大提高DEBUG的效率。有些细节的处理可以参考网上别人的代码,学习一些细节处理的小技巧。尤其是第一次
学习某个算法的时候,一定要阅读多种别人对该算法实现的代码,选择最适合自己作为以后自己的实现方法。

6. 整理模板

这个的难度要求就比较大,要求同学们做题后从自己的代码中提取那些可复用的部分
(别的题也可以用的代码)保存成模板以后使用。先说明一下原因,现场赛可以带纸质资料,总结的模板是可以在比赛中用到的,可提高打代吗的速度和正确性。而
别人总结的模板也可以用,但有时会出现用起来不顺手或者功能不全等问题。因此,总结自己的模板是必要的。为了复用性可以对代码做适当修改。注意添加注释说
明,详细程度要达到在自己忘了这个模板的用法的情况下能通过说明了解其用法。

总体来说,初期的训练方法就是在OJ做题,通过做题来学习算法和提高各方面能力。当然有机会的要多在实战中锻炼自己。个人不建议单独看书学习算法,因为没有足够题目的强化,算法很容易忘记。

原文地址http://www.cnblogs.com/rainydays/p/3671005.html

ACM-ICPC如何起步[转]的更多相关文章

  1. 【转】lonekight@xmu·ACM/ICPC 回忆录

    转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...

  2. 【转】ACM/ICPC生涯总结暨退役宣言—alpc55

    转自:http://hi.baidu.com/accplaystation/item/ca4c2ec565fa0b7fced4f811 ACM/ICPC生涯总结暨退役宣言—alpc55 前言 早就该写 ...

  3. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛

    比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...

  4. ACM/ICPC 之 BFS(离线)+康拓展开(TSH OJ-玩具(Toy))

    祝大家新年快乐,相信在新的一年里一定有我们自己的梦! 这是一个简化的魔板问题,只需输出步骤即可. 玩具(Toy) 描述 ZC神最擅长逻辑推理,一日,他给大家讲述起自己儿时的数字玩具. 该玩具酷似魔方, ...

  5. 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 ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

  10. 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 ...

随机推荐

  1. python基础学习笔记——模块

    自定义模块 我们今天来学习一下自定义模块(也就是私人订制),我们要自定义模块,首先就要知道什么是模块啊 一个函数封装一个功能,比如现在有一个软件,不可能将所有程序都写入一个文件,所以咱们应该分文件,组 ...

  2. 在 Yii2 项目中使用 Composer 添加 FontAwesome 字体资源

    2014-06-21 19:05 原文 简体 繁體 2,123 次围观 前天帮同事改个十年前的网站 bug,页面上一堆 include require 不禁让人抱头痛哭.看到 V2EX 上的讨论说,写 ...

  3. 【LeetCode】Permutations(全排列)

    这道题是LeetCode里的第46道题. 题目要求: 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3 ...

  4. TOJ 3134: 渊子赛马修改版

    3134: 渊子赛马修改版 Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 458     ...

  5. 自定义Title

    xml: <jp.co.view.TitleLayout android:id="@+id/titleLayout" android:layout_width="m ...

  6. 【Luogu】P2680运输计划(树上差分+二分)

    题目链接 总体思路……怎么说呢……是个暴力吧…… 首先用倍增预处理出每条路径的长度. 然后按长度把路径排序. 然后二分答案.对于当前答案mid检验,怎么检验呢? 首先差分把所有长度比mid大的链上除了 ...

  7. 在 Linux 实例上自动安装并运行 VNC Server

    原文网址:https://help.aliyun.com/knowledge_detail/41181.html?spm=5176.8208715.110.11.4c184ae8mlC7Yy 您可以使 ...

  8. 路飞学城详细步骤 part1

    详细步骤 1 添加登录页面 步骤: Header.vue 写一个登录按钮,<router-link to = ' /xx'> 在路由的 index.js中添加这个 新的路由,{'path' ...

  9. Linux(14):集群架构进阶 --- CentOS 7

    CentOS 7 CentOS 7 管理软件常用命令: vim /etc/selinux/config # 修改 SELINUX 开机自启动与否 setenforce 0 # 关闭 SELINUX g ...

  10. 洛谷 [P2734] 游戏

    博弈论+区间dp 有博弈论吗?大约只有一个博弈论的壳子 设 dp[i][j] 表示区间 i ~ j 先手最多能取多少, 它可以由 i ~ j - 1 与 i + 1 ~ j 来转移, 等于上述两个区间 ...