ACM 入 教程门
——ACM 初 网 程级 络课
内容提要
一、 ACM 介简
二、 ACM 比赛规则
三、如何训练
四、在 程序 践平台线 实
五、程序调试
六、 A+B
——ACM 初 网 程级 络课
一、 ACM 介简
 ACM 是美国 算机 会计 协 (Association for Computing Machinery) 的
称,它成立于 算机 生次年简 计 诞 1947 年,是目前 算机学界中 史计 历
最悠久、最具权威性的 。组织
 由 ACM 主 的国 大学生程序办 际 设计竞赛 (International Collegiate
Programming Contest) , 称简 ACM/ICPC ,是一 旨在展示大学生项
新能力、 精神和在 力下 写程序、分析和解决 能力的年创 团队 压 编 问题
度 。竞赛
——ACM 初 网 程级 络课
一、 ACM 介简
 的 史可以上溯到竞赛 历 1970 年,在美国德克 斯萨 A&M 大学举办
的首届比 。赛 1977 年,在 ACM 算机科学会 期 了首次计 议 间举办 总
决 ,并演 成 目前的一年一届的多国参与的国 性比 。迄今赛 变 为 际 赛
( 2014 年) 止已 了为 经举办 39 届。
 从该项竞赛 70 年代 至今,一直受到国 各知名大学的重 ,举办 际 视
并受到全世界各著名 算机公司的高度 注,在 去十几年计 关 过
中, APPLE 、 MICROSOFT 、 IBM 和 SUN 等世界著名企 分 担业 别
任了 的 助商。竞赛 赞
——ACM 初 网 程级 络课
二、 ACM 比赛规
则
 ACM/ICPC 以 的形式代表各学校参 ,每 最多由团队 赛 队 3 名队员组
成。每位 必 是入校队员 须 5 年内的在校学生或年 小于一个数,最龄
多可以参加 2 次全球 决 和总 赛 5 年的区域 拔 。选 赛
 比 期 ,每 使用赛 间 队 1 台 需要在电脑 5 个小 内使用时 C 、 C+
+ 、 Pascal 或 Java 中的一 写程序解决种编 10 至 12 个 。参问题 赛
可以携 如 、手册、程序清 等参考 料,不得携 任何队员 带诸 书 单 资 带 电
子媒 的 料。质 资
——ACM 初 网 程级 络课
二、 ACM 比赛规
则
 程序完成之后提交裁判 行, 行的 果会判定 正 或 并运 运 结 为 确 错误两种
及 通知参 。时 赛队
 最后的 者 正 解答 目最多且 用 最少的 伍。每道 用获胜 为 确 题 总 时 队 试题
将从 始到 解答被判定 正 止,其 每一次提交 行时 竞赛开 试题 为 确为 间 运
果被判 将被结 为错误则 罚时 20 分 ,未正 解答的 不 。钟 确 试题 记时
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
二、 ACM 比赛规
则
 事由各大洲区域 和全球 决 个 段 成。各 区第一名赛 预赛 总 赛两 阶 组 预赛
自 得参加全球 决 的 格。决 安排在每年的动获 总 赛 资 赛 3-7 月 行,举
而区域 一般安排在上一年的预赛 9-12 月 行, 洲区一般有举 亚 15 站
左右的 ,中国大 地区每年有预赛 陆 4-6 站比 。一个大学可以有多支赛
伍参加区域 ,但只能有一支 伍参加全球 决 。队 预赛 队 总 赛
 全球 决 第一名将 得 杯一座。另外,成 靠前的参 伍也将总 赛 获 奖 绩 赛队
得金、 和 牌。而解 数在中等以下的 伍会得到 但不会获 银 铜 题 队 确认 进
行排名。
——ACM 初 网 程级 络课
二、 ACM 比赛规
则
 ACM 比 涵盖了 算机 相当多的主干 程,涉及学科知 面广赛 计 专业 课 识
泛。直接相 的学科有:程序 、离散数学、数据 、人工智能关 设计 结构
、算法分析与 。而英 、高等数学(数学分析)、 性代数、操设计 语 线
作系 、 原理等都是重要的基 学科。统 编译 础
 目涵盖的范 很广,大致 分如下:竞赛题 围 划 Direct (简单
),题 Computational Geometry ( 算几何),计 Number
Theory (数 ),论 Combinatorics ( 合数学),组 Search
Techniques (搜索技 ),术 Dynamic Programming ( )动态规划
, Graph Theory ( ),图论 Other (其他)。
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
——ACM 初 网 程级 络课
三、如何训练
 首先明 一点,在 尖的确 顶 ACMer 中,很多人走的都不是在 OJ 猛刷
的路。题
 OJ 目 量良莠不 。 于大部分比 套 来 , 会有防止人吃题 质 齐 对 赛 题 说 总
蛋的水 ,也有故意刁 型的 目,有些 区 流行 文 (题 难 题 赛 还 论 题 结论
)、模板 , 些 目都不具 多少 价 。以上提到的 些题 题 这 题 备 训练 值 这 题
目我 不太需要 心,大部分参 者都会做(或者都不会做)。们 关 赛
 我 的目的主要是 自己 在在的解 能力,一来能在比们训练 锻炼 实实 题 赛
中把握住那些有区分度的 目,二来 使自己的 合素 有所提升题 确实 综 质
。
——ACM 初 网 程级 络课
三、如何训练
建 我 主要以参加议 们 TopCoder 和 CodeForces 比 的方式来提高自赛
己的水平,原因如下:
• 目 量高,没有防吃蛋、防 的 。题 质 圆满 题
• 有官方 解。题
• 参 者不乏来自世界各地的高手,你可以感受他 的 奏,学 他赛 们 节 习 们
不同的代 ( 程技巧、思路、算法模板)。码 编
• 可以打探国内各校 ACMer 的 力,甚至了解他 擅 的 型。实 们 长 题
• 熟悉比 的气氛,正式比 不慌不乱。赛 赛则
• 比 的策略,知道在比 怎么 度自己,怎么安排做 的 序锻炼 赛 赛该 调 题 顺
和 。时间
• 有 challenge 模式,通过 cha 人的代 来 自己 ( 友)代别 码 锻炼 读 队 码
的能力。
• 数据 后公 ,了解数据 怎么出,什么地方容易有陷 。赛 开 该 阱
——ACM 初 网 程级 络课
三、如何训练
除此之外, 可以通 看 文、看 、做还 过 论 书 OJ 目的方式来 固题 巩
一些其他方面的能力,比如学习 STL 的使用、深入 典算法等。 于经 对
ACM 来 ,我 不需要投入 多的精力在一些高 算法之中,竞赛 说 们 过 难
虽然不排除有 候 气好 好 到一道,但概率很低,不如把 投时 运 刚 碰 时间
入在能力 上性价比高。所以,如果真的有 趣并且在 盈余的训练 兴 时间
候可以深入研究一下,否 不太推荐。时 则
——ACM 初 网 程级 络课
推荐 目书 :
1. 《算法 入 典(第一或第二版竞赛 门经 ) 》 汝佳(必 籍),推荐刘 备书
看新版
2. 《程序 引及在 践》北京大学出版(大量 于设计导 线实 对应 POJ 的练
)习
3. 《 c 程序 言(第二版)》机械工 出版社,设计语 业 Brian
W.Kernighan 和 Dennis M.Ritchie
c 言 始人的著作,初学者表示太 ,语 创 难 对 Acmer 来 ,具 一些 程说 备 编
的基 ,就没那么 了。础 难
4. 《 Accerlated c++ 》 斯坦福的 C++ 教材 , 短小精悍 , 主 在 程的张 编 过
程中学习 , 始就会用地道的刚开 C++ 完成一些 常 的任 。简单 见 务
——ACM 初 网 程级 络课
有很多算法类的还 图书
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
1. 在 平台(线评测 Online Judge-OJ )目前很多国内大学都提供了在线
程序 判系 ,评 统 OJ 网站提供 目,用 注册登 后就可以提交程序题 户 录
, OJ 网站 判并立即返回 判 果。 些 目一般都具有 强实时评 评 结 这 题 较
的趣味性和挑 性。战
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
OJ 系 的统 Judge Status ( 判状评 态 / 反 果)馈结 :
a. Accepted: 解答正确 (AC)
b. Presentation Error: 出格式输 错误 (PE) ,一般 空格、空行等为 细
节
c. Wrong Answer: 答案错误 (WA)
d. Empty Answer: 答案 空为 (EA)
e. Compile Error: 编译错误 (CE)
f. Runtime Error: 行运 时错误 (RTE) ,非正常中断,如数 越界组
g. Time Limit Exceeded: 超时错误 (TLE)
h. Memory Limit Exceeded: 超内存错误 (MLE)
i. Output Limit Exceeded: 超 出限制输 错误 (OLE) ,一般 死循为 环
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
2. 比 著名的较 OJ 系 有:统
 浙江大学( ZOJ ): http://acm.zju.edu.cn/ ,是国内最早也是最有
名气的 OJ ,特点是数据比 刁 , 常会有你想不到的 界数据,较 钻 经 边
很能考 思 的全面性。验 维
 北京大学( POJ ): http://poj.org/ ,建站较 ZOJ 晚一些,但 目题
增加得很快,可申 下请 载 POJ 源代 。码
 杭州 子科技大学:电 http://acm.hdu.edu.cn/
 西班牙 Universidad de Valladolid : http://acm.uva.es ,是世界上
最大最有名的 OJ , 目多,类型 ,数据也很刁 。题 杂 钻
 俄 斯 拉尔大学:罗 乌 http://acm.timus.ru ,是一个老牌的 OJ , 目题
不多,但比 典。较经
 ICPC 官方网站: http://icpc.baylor.edu/icpc/ ,上面会公布每年世
界 决 的排名及 。总 赛 试题
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
3. ICPC 目 成与特点题 组
一个完整的 ICPC 目包括题 5 个部分: 目描述(题 Description )、 入输
描 述 ( Input ) 、 出 描 述 (输 Output ) 、 入 例 (输 样 Simple
Input )和 出 例(输 样 Simple Output )
a. 目描述: 目通常不会直接告知要求解一个什么 ,而 是要以题 题 问题
一个故事或者游 或 中的 景 背景知 引入的,所以 目描述戏 现实 场 为 识 题
会比 繁 。较 琐
b. 入、 出描述: 出 目 入输 输 给 题 对输 / 出格式的要求。输
c. 入输 / 出 例: 了便于理解 目,以及 程序的需要, 目中输 样 为 题 测试 题
会 出几 正 的 数据。给 组 确 测试
此外,每道 目都有 限制和内存空 的限制。题 时间 间
在服 器端,每道 目 会有 入数据文件和 出数据文件。务 题 还 输 输
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
4. ICPC 的 入输
ICPC 目的 入有题 输 4 基本情形:种
a. 入数据文件中,第一行数据 明了 数据的数目;输 标 测试
b. 入数据文件中,有 明 入 束的数据;输 标 输 结
c. 入数据文件中, 数据一直到文件尾;输 测试
d. 没有 入数据, 情形很罕 。输 这种 见
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
情形 (1) 的 理处 :
int i,nCase;
//nCase 表示 数据数目测试
scanf(“%d”,&nCase);
for(i=1;i<=nCase;i++)
{
……
// 理第处 i 个 入输
}
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
情形 (2) 的 理处 :
int m,n;
// 假定每 数据包含 个数据组测试 两 :m 、 n ; 0 0 表示 束结
while(1)
{
scanf(“%d %d”,&m,&n);
if(m==0 && n==0) break;
……
// 理处 m 和 n
}
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
情形 (3) 的 理处 :
int m,n;
// 假定每 数据包含 个数据组测试 两 :m 、 n
while(scanf(“%d %d”,&m,&n)!=EOF)
{
……
// 理处 m 和 n
}
——ACM 初 网 程级 络课
四、在 程序 践平台线 实
5. ICPC 出输
ICPC 目 入要求是 其 格的,只要格式不 或者程序考 不全面题 对输 极 严 对 虑
,程序就不能通 ,需要考 如下情况:过 虑
a. 正 出空格: 格按照 目的要求或者 入 例来 出空 格;确输 严 题 输 样 输
b. 正 出空行:一般可能要求每 出数据之后 出空行, 但最后确输 组输 输
一 出数据后不 出空行;组输 输
c. 正 地按照 目所要求的精度 行 出;确 题 进 输
d. 于 目要求 出的一些特定的提示信息,如果 出 例里有,最好对 题 输 输 样
直接拷 到代 里。贝 码
——ACM 初 网 程级 络课
五、程序调试
使用高 算机 言,如级计 语 C 、 C++ 、 Java , 写的程序,都需要编 经
器 或解 ,才能 化成机器能 并能 行的二 制代 。过编译 编译 释 转 够识别 执 进 码
然而,即使我 付出了很多的精力和 , 写出来的程序 是 有们 时间 编 还 总 这
那 的 ,因此需要反 修改代 才能 最 目 。样 样 问题 复 码 实现 终 标
本 的目的是介 四 常用的节 绍 种 C 器,并利用 器提供的 功编辑 编辑 调试
能来 程序,从而修改程序中的 。如何一步步的跟踪代 ,找到调试 错误 码
, 明白 何程序不能正常 行, 个 程称 程序。手工跟问题 搞 为 运 这 过 为调试
踪能 有效的帮助初学者找到够 bug 出在什么位置,消除 bug , 程序正让
常 行。运
——ACM 初 网 程级 络课
五、程序调试
自 化的工具同 也能 帮助你跟踪程序,尤其当程序很 效果动 样 够 复杂时
更加明 , 工具叫做 器。 器能 行中的程序根据你的显 这种 调试 调试 够让运
需要 停, 看程序怎么 作的。有些 器是以命令行的形式工作的暂 查 运 调试
,大部分 器都具 好的 形界面, 器能 方便的帮助你看到所调试 备 图 调试 够
有 量的状 。变 态
器并不能解决程序中出 的 ,它 是一 帮助 程序的调试 现 问题 仅仅 种 调试
工具。首先 用手中的 和笔分析程序, 清到底怎么回事,一旦应该运 纸 搞
定 大致出在什么位置,便可以用 器 察程序中特定 量的确 错误 调试 观 变 值
,从而找到 并改正错误 错误
——ACM 初 网 程级 络课
五、程序调试
1. 常用 C 言 器语 编辑
IDE (Integrated Development Environment) 集成 境,是开发环 专门
用于程序 境的 用程序,一般包括代 器、 器、 器开发环 应 码编辑 编译 调试
和 形用 界面工具。就是集成了代 写功能、分析功能、 功能图 户 码编 编译
、 功能等一体化的 件套件。如微 的调试 开发软 软 Visual Studio 系
列, Borland 的 C++ Builder 等。 程序可以独立 行,也可以和其它该 运
程序并用,除此之外 有很多还 C 言的语 IDE 。
IDE 用 使用高 程 言提供了很多方便。为 户 级编 语 C 的 IDE 非常多,对
于学习 C 言的朋友而言,用什么语 IDE 可能并不重要,重要的是学习 C
言本身,不 ,会用一款自己 的语 过 习惯 IDE 行程序的 写和进 编 调试确实
很方便。 一小 中我 将依次介 四 常 的这 节 们 绍 种 见 C 言语 IDE 。
——ACM 初 网 程级 络课
五、程序调试
a) Dev-C++ : Dev-C++ 是一个 Windows 境下环 C/C++ 的集成 境开发环
,它是一款自由 件,遵守软 GPL 可 分 源代 。它集合了许 协议 发 码
MinGW 等 多自由 件,并且可以取得最新版本的各 工具支持。众 软 种
Dev-C++ 是 NOI 、 NOIP 等比 的指定工具,缺点是 功能弱。赛 调试
b) Visual Studio : Microsoft Visual Studio ( 称简 VS )是美国微 公软
司的 工具包系列 品。开发 产 VS 是一个基本完整的 工具集,它包开发
括了整个 件生命周期中所需要的大部分工具,如软 UML 工具、代码
管控工具、集成 境等等。开发环
——ACM 初 网 程级 络课
五、程序调试
c) Eclipse for C : Eclipse 是一个 放源代 的、基于开 码 Java 的可 展扩 开
平台。就其本身而言,它只是一个框架和一 服 ,用于通 插件发 组 务 过
件 建 境。幸 的是,组 构 开发环 运 Eclipse 附 了一个 准的插件集,带 标
包括 Java 工具(开发 Java Development Kit , JDK )。
d) Code::Blocks : Code::Blocks 是一个 源、免 、跨平台(支持开 费
Windows 、 GNU/Linux 、 Mac OS X 以及其他类 UNIX )、支持插
件 展的扩 C/C++ 集成 境。开发环 Code::Blocks 由 粹的纯 C++ 言语 开
完成,它使用了著名的 形界面发 图 库 wxWidgets ( 2.6.2 unicode )
版。
——ACM 初 网 程级 络课
五、程序调试
2. 程序调试
a. 命令行基础
b. 入 出控制输 输
c. 批 理文件处
d. 断点与 步单 调试
——ACM 初 网 程级 络课
五、程序调试
3. 合综 实验
例:周小小今天的家庭作 就是 加 算,但是他不知道 算得 不业 练习 减运 对
,你能 程帮他 一下 ?对 编 验证 吗
入: 入文件有若干行,第一行 正整数输 输 为 N ,其后有 N 行,每行由两
个整数和一个 算符 成,中 空格隔 。运 组 间 开
出: 于每一行 出相 的表 式和 算 果输 对 输 应 达 运 结
入 例:输 样
3
1 2 +
2 1 -
200 100 –
出 例:输 样
Case 1: 1 + 2 = 3
Case 2: 2 – 1 = 1
Case 3: 200 – 100 = 100

More Related Content

PPTX
Temporal graph
PDF
getPDF.aspx
PDF
getPDF.aspx
PDF
竞赛中C++语言拾遗
PPT
香港六合彩
PDF
Acm算法模板
PPT
第11章 目标代码生成
PPTX
ACM SIGCSE China 2024 计算机本科课程体系的一个新方案-徐志伟.pptx
Temporal graph
getPDF.aspx
getPDF.aspx
竞赛中C++语言拾遗
香港六合彩
Acm算法模板
第11章 目标代码生成
ACM SIGCSE China 2024 计算机本科课程体系的一个新方案-徐志伟.pptx

Recently uploaded (20)

PPTX
学校原版班戈大学毕业证Bangor毕业证原版一比一
PPTX
学校原版加州大学戴维斯分校毕业证UCD毕业证原版一比一
PPTX
学校原版埃塞克斯大学毕业证Essex毕业证原版一比一
PPTX
学校原版埃克塞特大学毕业证Exon毕业证原版一比一
PPTX
学校原版不列颠哥伦比亚大学毕业证UBC毕业证原版一比一
DOCX
孕經濟:月子中心產業發展現狀及未來策略探討 唯有與時俱進,不斷創新,才能在孕經濟浪潮中立於不敗之地。詹翔霖老師.docx
PPTX
Jiaotong University School of Medicine PPT template
PPTX
学校原版百年理工学院毕业证Centennial毕业证原版一比一
PPTX
学校原版汤普森河大学毕业证TRU毕业证原版一比一
PPTX
学校原版南澳大学毕业证UniSA毕业证原版一比一
PPTX
学校原版加州大学戴维斯分校毕业证UC Davis毕业证原版一比一
PPTX
学校原版阿卡迪亚大学毕业证Acadia毕业证原版一比一
PPTX
学校原版哥伦比亚理工学院毕业证BCIT毕业证原版一比一
PPTX
学校原版韩国岭南大学毕业证LU毕业证原版一比一
PPTX
学校原版爱丁堡龙比亚大学毕业证Dundee毕业证原版一比一
PPTX
学校原版皇家山大学毕业证MRU毕业证原版一比一
PPTX
学校原版杜克大学毕业证Duke毕业证原版一比一
PPTX
学校原版克莱姆森大学毕业证Clemson毕业证原版一比一
PPTX
学校原版巴斯大学毕业证Bath毕业证原版一比一
PPTX
学校原版温尼伯大学毕业证Winnipeg毕业证原版一比一
学校原版班戈大学毕业证Bangor毕业证原版一比一
学校原版加州大学戴维斯分校毕业证UCD毕业证原版一比一
学校原版埃塞克斯大学毕业证Essex毕业证原版一比一
学校原版埃克塞特大学毕业证Exon毕业证原版一比一
学校原版不列颠哥伦比亚大学毕业证UBC毕业证原版一比一
孕經濟:月子中心產業發展現狀及未來策略探討 唯有與時俱進,不斷創新,才能在孕經濟浪潮中立於不敗之地。詹翔霖老師.docx
Jiaotong University School of Medicine PPT template
学校原版百年理工学院毕业证Centennial毕业证原版一比一
学校原版汤普森河大学毕业证TRU毕业证原版一比一
学校原版南澳大学毕业证UniSA毕业证原版一比一
学校原版加州大学戴维斯分校毕业证UC Davis毕业证原版一比一
学校原版阿卡迪亚大学毕业证Acadia毕业证原版一比一
学校原版哥伦比亚理工学院毕业证BCIT毕业证原版一比一
学校原版韩国岭南大学毕业证LU毕业证原版一比一
学校原版爱丁堡龙比亚大学毕业证Dundee毕业证原版一比一
学校原版皇家山大学毕业证MRU毕业证原版一比一
学校原版杜克大学毕业证Duke毕业证原版一比一
学校原版克莱姆森大学毕业证Clemson毕业证原版一比一
学校原版巴斯大学毕业证Bath毕业证原版一比一
学校原版温尼伯大学毕业证Winnipeg毕业证原版一比一
Ad
Ad

Acm入门教程

  • 2. ——ACM 初 网 程级 络课 内容提要 一、 ACM 介简 二、 ACM 比赛规则 三、如何训练 四、在 程序 践平台线 实 五、程序调试 六、 A+B
  • 3. ——ACM 初 网 程级 络课 一、 ACM 介简  ACM 是美国 算机 会计 协 (Association for Computing Machinery) 的 称,它成立于 算机 生次年简 计 诞 1947 年,是目前 算机学界中 史计 历 最悠久、最具权威性的 。组织  由 ACM 主 的国 大学生程序办 际 设计竞赛 (International Collegiate Programming Contest) , 称简 ACM/ICPC ,是一 旨在展示大学生项 新能力、 精神和在 力下 写程序、分析和解决 能力的年创 团队 压 编 问题 度 。竞赛
  • 4. ——ACM 初 网 程级 络课 一、 ACM 介简  的 史可以上溯到竞赛 历 1970 年,在美国德克 斯萨 A&M 大学举办 的首届比 。赛 1977 年,在 ACM 算机科学会 期 了首次计 议 间举办 总 决 ,并演 成 目前的一年一届的多国参与的国 性比 。迄今赛 变 为 际 赛 ( 2014 年) 止已 了为 经举办 39 届。  从该项竞赛 70 年代 至今,一直受到国 各知名大学的重 ,举办 际 视 并受到全世界各著名 算机公司的高度 注,在 去十几年计 关 过 中, APPLE 、 MICROSOFT 、 IBM 和 SUN 等世界著名企 分 担业 别 任了 的 助商。竞赛 赞
  • 5. ——ACM 初 网 程级 络课 二、 ACM 比赛规 则  ACM/ICPC 以 的形式代表各学校参 ,每 最多由团队 赛 队 3 名队员组 成。每位 必 是入校队员 须 5 年内的在校学生或年 小于一个数,最龄 多可以参加 2 次全球 决 和总 赛 5 年的区域 拔 。选 赛  比 期 ,每 使用赛 间 队 1 台 需要在电脑 5 个小 内使用时 C 、 C+ + 、 Pascal 或 Java 中的一 写程序解决种编 10 至 12 个 。参问题 赛 可以携 如 、手册、程序清 等参考 料,不得携 任何队员 带诸 书 单 资 带 电 子媒 的 料。质 资
  • 6. ——ACM 初 网 程级 络课 二、 ACM 比赛规 则  程序完成之后提交裁判 行, 行的 果会判定 正 或 并运 运 结 为 确 错误两种 及 通知参 。时 赛队  最后的 者 正 解答 目最多且 用 最少的 伍。每道 用获胜 为 确 题 总 时 队 试题 将从 始到 解答被判定 正 止,其 每一次提交 行时 竞赛开 试题 为 确为 间 运 果被判 将被结 为错误则 罚时 20 分 ,未正 解答的 不 。钟 确 试题 记时
  • 7. ——ACM 初 网 程级 络课
  • 8. ——ACM 初 网 程级 络课 二、 ACM 比赛规 则  事由各大洲区域 和全球 决 个 段 成。各 区第一名赛 预赛 总 赛两 阶 组 预赛 自 得参加全球 决 的 格。决 安排在每年的动获 总 赛 资 赛 3-7 月 行,举 而区域 一般安排在上一年的预赛 9-12 月 行, 洲区一般有举 亚 15 站 左右的 ,中国大 地区每年有预赛 陆 4-6 站比 。一个大学可以有多支赛 伍参加区域 ,但只能有一支 伍参加全球 决 。队 预赛 队 总 赛  全球 决 第一名将 得 杯一座。另外,成 靠前的参 伍也将总 赛 获 奖 绩 赛队 得金、 和 牌。而解 数在中等以下的 伍会得到 但不会获 银 铜 题 队 确认 进 行排名。
  • 9. ——ACM 初 网 程级 络课 二、 ACM 比赛规 则  ACM 比 涵盖了 算机 相当多的主干 程,涉及学科知 面广赛 计 专业 课 识 泛。直接相 的学科有:程序 、离散数学、数据 、人工智能关 设计 结构 、算法分析与 。而英 、高等数学(数学分析)、 性代数、操设计 语 线 作系 、 原理等都是重要的基 学科。统 编译 础  目涵盖的范 很广,大致 分如下:竞赛题 围 划 Direct (简单 ),题 Computational Geometry ( 算几何),计 Number Theory (数 ),论 Combinatorics ( 合数学),组 Search Techniques (搜索技 ),术 Dynamic Programming ( )动态规划 , Graph Theory ( ),图论 Other (其他)。
  • 10. ——ACM 初 网 程级 络课
  • 11. ——ACM 初 网 程级 络课
  • 12. ——ACM 初 网 程级 络课
  • 13. ——ACM 初 网 程级 络课
  • 14. ——ACM 初 网 程级 络课
  • 15. ——ACM 初 网 程级 络课
  • 16. ——ACM 初 网 程级 络课
  • 17. ——ACM 初 网 程级 络课
  • 18. ——ACM 初 网 程级 络课 三、如何训练  首先明 一点,在 尖的确 顶 ACMer 中,很多人走的都不是在 OJ 猛刷 的路。题  OJ 目 量良莠不 。 于大部分比 套 来 , 会有防止人吃题 质 齐 对 赛 题 说 总 蛋的水 ,也有故意刁 型的 目,有些 区 流行 文 (题 难 题 赛 还 论 题 结论 )、模板 , 些 目都不具 多少 价 。以上提到的 些题 题 这 题 备 训练 值 这 题 目我 不太需要 心,大部分参 者都会做(或者都不会做)。们 关 赛  我 的目的主要是 自己 在在的解 能力,一来能在比们训练 锻炼 实实 题 赛 中把握住那些有区分度的 目,二来 使自己的 合素 有所提升题 确实 综 质 。
  • 19. ——ACM 初 网 程级 络课 三、如何训练 建 我 主要以参加议 们 TopCoder 和 CodeForces 比 的方式来提高自赛 己的水平,原因如下: • 目 量高,没有防吃蛋、防 的 。题 质 圆满 题 • 有官方 解。题 • 参 者不乏来自世界各地的高手,你可以感受他 的 奏,学 他赛 们 节 习 们 不同的代 ( 程技巧、思路、算法模板)。码 编 • 可以打探国内各校 ACMer 的 力,甚至了解他 擅 的 型。实 们 长 题 • 熟悉比 的气氛,正式比 不慌不乱。赛 赛则 • 比 的策略,知道在比 怎么 度自己,怎么安排做 的 序锻炼 赛 赛该 调 题 顺 和 。时间 • 有 challenge 模式,通过 cha 人的代 来 自己 ( 友)代别 码 锻炼 读 队 码 的能力。 • 数据 后公 ,了解数据 怎么出,什么地方容易有陷 。赛 开 该 阱
  • 20. ——ACM 初 网 程级 络课 三、如何训练 除此之外, 可以通 看 文、看 、做还 过 论 书 OJ 目的方式来 固题 巩 一些其他方面的能力,比如学习 STL 的使用、深入 典算法等。 于经 对 ACM 来 ,我 不需要投入 多的精力在一些高 算法之中,竞赛 说 们 过 难 虽然不排除有 候 气好 好 到一道,但概率很低,不如把 投时 运 刚 碰 时间 入在能力 上性价比高。所以,如果真的有 趣并且在 盈余的训练 兴 时间 候可以深入研究一下,否 不太推荐。时 则
  • 21. ——ACM 初 网 程级 络课 推荐 目书 : 1. 《算法 入 典(第一或第二版竞赛 门经 ) 》 汝佳(必 籍),推荐刘 备书 看新版 2. 《程序 引及在 践》北京大学出版(大量 于设计导 线实 对应 POJ 的练 )习 3. 《 c 程序 言(第二版)》机械工 出版社,设计语 业 Brian W.Kernighan 和 Dennis M.Ritchie c 言 始人的著作,初学者表示太 ,语 创 难 对 Acmer 来 ,具 一些 程说 备 编 的基 ,就没那么 了。础 难 4. 《 Accerlated c++ 》 斯坦福的 C++ 教材 , 短小精悍 , 主 在 程的张 编 过 程中学习 , 始就会用地道的刚开 C++ 完成一些 常 的任 。简单 见 务
  • 22. ——ACM 初 网 程级 络课 有很多算法类的还 图书
  • 23. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 1. 在 平台(线评测 Online Judge-OJ )目前很多国内大学都提供了在线 程序 判系 ,评 统 OJ 网站提供 目,用 注册登 后就可以提交程序题 户 录 , OJ 网站 判并立即返回 判 果。 些 目一般都具有 强实时评 评 结 这 题 较 的趣味性和挑 性。战
  • 24. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 OJ 系 的统 Judge Status ( 判状评 态 / 反 果)馈结 : a. Accepted: 解答正确 (AC) b. Presentation Error: 出格式输 错误 (PE) ,一般 空格、空行等为 细 节 c. Wrong Answer: 答案错误 (WA) d. Empty Answer: 答案 空为 (EA) e. Compile Error: 编译错误 (CE) f. Runtime Error: 行运 时错误 (RTE) ,非正常中断,如数 越界组 g. Time Limit Exceeded: 超时错误 (TLE) h. Memory Limit Exceeded: 超内存错误 (MLE) i. Output Limit Exceeded: 超 出限制输 错误 (OLE) ,一般 死循为 环
  • 25. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 2. 比 著名的较 OJ 系 有:统  浙江大学( ZOJ ): http://acm.zju.edu.cn/ ,是国内最早也是最有 名气的 OJ ,特点是数据比 刁 , 常会有你想不到的 界数据,较 钻 经 边 很能考 思 的全面性。验 维  北京大学( POJ ): http://poj.org/ ,建站较 ZOJ 晚一些,但 目题 增加得很快,可申 下请 载 POJ 源代 。码  杭州 子科技大学:电 http://acm.hdu.edu.cn/  西班牙 Universidad de Valladolid : http://acm.uva.es ,是世界上 最大最有名的 OJ , 目多,类型 ,数据也很刁 。题 杂 钻  俄 斯 拉尔大学:罗 乌 http://acm.timus.ru ,是一个老牌的 OJ , 目题 不多,但比 典。较经  ICPC 官方网站: http://icpc.baylor.edu/icpc/ ,上面会公布每年世 界 决 的排名及 。总 赛 试题
  • 26. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 3. ICPC 目 成与特点题 组 一个完整的 ICPC 目包括题 5 个部分: 目描述(题 Description )、 入输 描 述 ( Input ) 、 出 描 述 (输 Output ) 、 入 例 (输 样 Simple Input )和 出 例(输 样 Simple Output ) a. 目描述: 目通常不会直接告知要求解一个什么 ,而 是要以题 题 问题 一个故事或者游 或 中的 景 背景知 引入的,所以 目描述戏 现实 场 为 识 题 会比 繁 。较 琐 b. 入、 出描述: 出 目 入输 输 给 题 对输 / 出格式的要求。输 c. 入输 / 出 例: 了便于理解 目,以及 程序的需要, 目中输 样 为 题 测试 题 会 出几 正 的 数据。给 组 确 测试 此外,每道 目都有 限制和内存空 的限制。题 时间 间 在服 器端,每道 目 会有 入数据文件和 出数据文件。务 题 还 输 输
  • 27. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 4. ICPC 的 入输 ICPC 目的 入有题 输 4 基本情形:种 a. 入数据文件中,第一行数据 明了 数据的数目;输 标 测试 b. 入数据文件中,有 明 入 束的数据;输 标 输 结 c. 入数据文件中, 数据一直到文件尾;输 测试 d. 没有 入数据, 情形很罕 。输 这种 见
  • 28. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 情形 (1) 的 理处 : int i,nCase; //nCase 表示 数据数目测试 scanf(“%d”,&nCase); for(i=1;i<=nCase;i++) { …… // 理第处 i 个 入输 }
  • 29. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 情形 (2) 的 理处 : int m,n; // 假定每 数据包含 个数据组测试 两 :m 、 n ; 0 0 表示 束结 while(1) { scanf(“%d %d”,&m,&n); if(m==0 && n==0) break; …… // 理处 m 和 n }
  • 30. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 情形 (3) 的 理处 : int m,n; // 假定每 数据包含 个数据组测试 两 :m 、 n while(scanf(“%d %d”,&m,&n)!=EOF) { …… // 理处 m 和 n }
  • 31. ——ACM 初 网 程级 络课 四、在 程序 践平台线 实 5. ICPC 出输 ICPC 目 入要求是 其 格的,只要格式不 或者程序考 不全面题 对输 极 严 对 虑 ,程序就不能通 ,需要考 如下情况:过 虑 a. 正 出空格: 格按照 目的要求或者 入 例来 出空 格;确输 严 题 输 样 输 b. 正 出空行:一般可能要求每 出数据之后 出空行, 但最后确输 组输 输 一 出数据后不 出空行;组输 输 c. 正 地按照 目所要求的精度 行 出;确 题 进 输 d. 于 目要求 出的一些特定的提示信息,如果 出 例里有,最好对 题 输 输 样 直接拷 到代 里。贝 码
  • 32. ——ACM 初 网 程级 络课 五、程序调试 使用高 算机 言,如级计 语 C 、 C++ 、 Java , 写的程序,都需要编 经 器 或解 ,才能 化成机器能 并能 行的二 制代 。过编译 编译 释 转 够识别 执 进 码 然而,即使我 付出了很多的精力和 , 写出来的程序 是 有们 时间 编 还 总 这 那 的 ,因此需要反 修改代 才能 最 目 。样 样 问题 复 码 实现 终 标 本 的目的是介 四 常用的节 绍 种 C 器,并利用 器提供的 功编辑 编辑 调试 能来 程序,从而修改程序中的 。如何一步步的跟踪代 ,找到调试 错误 码 , 明白 何程序不能正常 行, 个 程称 程序。手工跟问题 搞 为 运 这 过 为调试 踪能 有效的帮助初学者找到够 bug 出在什么位置,消除 bug , 程序正让 常 行。运
  • 33. ——ACM 初 网 程级 络课 五、程序调试 自 化的工具同 也能 帮助你跟踪程序,尤其当程序很 效果动 样 够 复杂时 更加明 , 工具叫做 器。 器能 行中的程序根据你的显 这种 调试 调试 够让运 需要 停, 看程序怎么 作的。有些 器是以命令行的形式工作的暂 查 运 调试 ,大部分 器都具 好的 形界面, 器能 方便的帮助你看到所调试 备 图 调试 够 有 量的状 。变 态 器并不能解决程序中出 的 ,它 是一 帮助 程序的调试 现 问题 仅仅 种 调试 工具。首先 用手中的 和笔分析程序, 清到底怎么回事,一旦应该运 纸 搞 定 大致出在什么位置,便可以用 器 察程序中特定 量的确 错误 调试 观 变 值 ,从而找到 并改正错误 错误
  • 34. ——ACM 初 网 程级 络课 五、程序调试 1. 常用 C 言 器语 编辑 IDE (Integrated Development Environment) 集成 境,是开发环 专门 用于程序 境的 用程序,一般包括代 器、 器、 器开发环 应 码编辑 编译 调试 和 形用 界面工具。就是集成了代 写功能、分析功能、 功能图 户 码编 编译 、 功能等一体化的 件套件。如微 的调试 开发软 软 Visual Studio 系 列, Borland 的 C++ Builder 等。 程序可以独立 行,也可以和其它该 运 程序并用,除此之外 有很多还 C 言的语 IDE 。 IDE 用 使用高 程 言提供了很多方便。为 户 级编 语 C 的 IDE 非常多,对 于学习 C 言的朋友而言,用什么语 IDE 可能并不重要,重要的是学习 C 言本身,不 ,会用一款自己 的语 过 习惯 IDE 行程序的 写和进 编 调试确实 很方便。 一小 中我 将依次介 四 常 的这 节 们 绍 种 见 C 言语 IDE 。
  • 35. ——ACM 初 网 程级 络课 五、程序调试 a) Dev-C++ : Dev-C++ 是一个 Windows 境下环 C/C++ 的集成 境开发环 ,它是一款自由 件,遵守软 GPL 可 分 源代 。它集合了许 协议 发 码 MinGW 等 多自由 件,并且可以取得最新版本的各 工具支持。众 软 种 Dev-C++ 是 NOI 、 NOIP 等比 的指定工具,缺点是 功能弱。赛 调试 b) Visual Studio : Microsoft Visual Studio ( 称简 VS )是美国微 公软 司的 工具包系列 品。开发 产 VS 是一个基本完整的 工具集,它包开发 括了整个 件生命周期中所需要的大部分工具,如软 UML 工具、代码 管控工具、集成 境等等。开发环
  • 36. ——ACM 初 网 程级 络课 五、程序调试 c) Eclipse for C : Eclipse 是一个 放源代 的、基于开 码 Java 的可 展扩 开 平台。就其本身而言,它只是一个框架和一 服 ,用于通 插件发 组 务 过 件 建 境。幸 的是,组 构 开发环 运 Eclipse 附 了一个 准的插件集,带 标 包括 Java 工具(开发 Java Development Kit , JDK )。 d) Code::Blocks : Code::Blocks 是一个 源、免 、跨平台(支持开 费 Windows 、 GNU/Linux 、 Mac OS X 以及其他类 UNIX )、支持插 件 展的扩 C/C++ 集成 境。开发环 Code::Blocks 由 粹的纯 C++ 言语 开 完成,它使用了著名的 形界面发 图 库 wxWidgets ( 2.6.2 unicode ) 版。
  • 37. ——ACM 初 网 程级 络课 五、程序调试 2. 程序调试 a. 命令行基础 b. 入 出控制输 输 c. 批 理文件处 d. 断点与 步单 调试
  • 38. ——ACM 初 网 程级 络课 五、程序调试 3. 合综 实验 例:周小小今天的家庭作 就是 加 算,但是他不知道 算得 不业 练习 减运 对 ,你能 程帮他 一下 ?对 编 验证 吗 入: 入文件有若干行,第一行 正整数输 输 为 N ,其后有 N 行,每行由两 个整数和一个 算符 成,中 空格隔 。运 组 间 开 出: 于每一行 出相 的表 式和 算 果输 对 输 应 达 运 结 入 例:输 样 3 1 2 + 2 1 - 200 100 – 出 例:输 样 Case 1: 1 + 2 = 3 Case 2: 2 – 1 = 1 Case 3: 200 – 100 = 100