2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

76
22/6/8 1 ACM 快快快快 快快快快 快快

Transcript of 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

Page 1: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/221

ACM 快乐竞赛

计算机系 陈宇

Page 2: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/222

ACM 入门

Page 3: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/223

第一部分第一部分

初识 ACM

Page 4: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/224

ACM (Association for Computing Machinery)

成立于计算机诞生次年,是目前计算机学界中历史最悠久、最具权威性的组织…

What is ACM ?What is ACM ?

Page 5: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/225

我们说的“我们说的“ ACM”ACM”是什么?是什么?

Page 6: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/226

ACM/ICPCACM/ICPC :: ACM 主办的国际大学生程序设计竞赛 (Internati

onal Collegiate Programming Contest) ,简称 ACM / ICPC ,自从 1977 年开始至今已经连续举办 31届。其宗旨是提供一个让大学生向 IT 界展示自己分析问题和解决问题的能力的绝好机会,让下一代 IT 天才可以接触到其今后工作中将要用到的各种软件。

现在, ACM / ICPC 已成为世界各国大学生中最具影响力的国际计算机赛事。(非官方)

Page 7: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/227

该赛事分高校校内赛、地区赛、大洲预赛和世界决赛四个级别。 2006 年的赛事有来自 84 个国家、 1700 多所高校的6600 多支队伍参加。

每一届的赛事在秋季学期举行各大洲预赛,在春季学期举行世界总决赛。 2006年全球共有 36 个大洲预赛区(其中亚洲 12 个),共选拔 88 个学校(其中亚洲 28 个)的代表队参加世界总决赛。

Page 8: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/228

ACM/ICPC in ChinaACM/ICPC in China

中国大陆高校从 1996 年开始参加 ACM 国际大学生程序设计竞赛亚洲预赛。

前六届中国赛区设在上海,由上海大学承办;

2002 年由清华大学和西安交通大学承办;2003 年由清华大学和中山大学承办。2004 年由北京大学和上海交通大学承办。2005 年由四川大学、北大和浙大承办。2006 年由上海大学、清华和西电承办。2007 年:北航、南航、吉大、西华

Page 9: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/229

2008 合肥 杭州 哈尔滨 北京 成都2009 上海 宁波 武汉 合肥 哈尔滨2010 哈尔滨 天津 杭州 成都 福州

ACM/ICPC in ChinaACM/ICPC in China

Page 10: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2210

Page 11: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2211

ACM in nefuACM in nefu 2006 年 9 月,第一次参加黑龙江省赛 ( 第一届 ) 三等奖 2006 年 11 月,第一次参加 31 届 ACM 亚洲比赛 ( 北京赛

区 ) 优胜奖 2007 年 5 月,黑龙江 acm 省赛 ( 第二届 ) 一等奖 2007 年 6 月 , 东北地区首届“东软”杯 acm 大学生程序

设计大赛 二等奖 2007 年 9 月 , 参加吉林全国 internet 网络邀请赛 学校排

名第 8 2007 年 10 月 , 第 32 届 ACM 大学生程序设计大赛 ( 南京 )

优胜奖 2007 年 11 月,第 32 届 ACM 大学生程序设计大赛 ( 长

春 ) 优胜奖

Page 12: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2212

2008 年 5 月,黑龙江省赛一等奖 2008 年 6 月,东北地区赛 一等奖 2008 年秋, ACM2008 亚洲 哈尔滨、北京、合肥、杭州,

各获得一块铜牌! 2009 年 5 月,黑龙江省赛二等奖 2009 年 6 月,东北地区赛 三等奖 2009 年秋, ACM2009 亚洲 哈尔滨、合肥、武汉,各获得

一块铜牌! 2010 年 4 月 杭州全国邀请赛铜牌 2010 年 5 月,黑龙江省赛一等奖 2010 年 6 月,东北地区赛一等奖

ACM in 2008 ACM in 2008 林大林大

Page 13: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2213

2010 秋, ACM 亚洲哈尔滨、天津和福州各收获一块铜牌。

Page 14: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2214

ACMACM 和就业:和就业:IBM 和阿里巴巴独家赞助05 计算机杨成虎:阿里巴巴 年薪 12 万06 信息安全 陈涛:阿里巴巴 年薪 10 万07 计算机 孙帆:已经签约 百度 年薪 1

4 万

Page 15: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2215

预期赛事(今后每年)预期赛事(今后每年) 3~4 月,举行校内大赛(暨选拔赛) 5 月,参加黑龙江江省大学生程序设计大赛 ( 哈工

大 ) 6 月 , 参加东北地区赛 ( 哈工程 ) 11 月,参加 ACM/ICPC 亚洲区比赛(至少参加 4 ~

5 个赛区的比赛) 另外,每学期至少有三次月赛以及适当的练习赛

Page 16: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2216

我们的一些照片我们的一些照片

Page 17: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2217

Page 18: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2218

Page 19: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2219

Page 20: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2220

Page 21: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2221

Page 22: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2222

Page 23: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2223

Page 24: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2224

Page 25: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2225

Page 26: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2226

Page 27: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2227

杨成虎 现阿里巴巴工程师杨成虎 现阿里巴巴工程师

Page 28: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2228

这就是陈涛 也是阿里巴巴这就是陈涛 也是阿里巴巴

Page 29: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2229

Page 30: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2230

09 09 第一次惨败第一次惨败

Page 31: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2231

09 09 第二次 惨败 省赛第二次 惨败 省赛

Page 32: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2232

09 09 第三次 惨败 大连东北地区赛第三次 惨败 大连东北地区赛

因为成绩不好,所以没照相片!

Page 33: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2233

0909 亚洲赛终于亚洲赛终于 ---------------- 爆发了(合爆发了(合肥)肥)

Page 34: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2234

Page 35: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2235

20102010 省赛 强大的阵容省赛 强大的阵容

Page 36: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2236

东北赛东北赛 ---“---“ 雷锋”雷锋”

Page 37: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2237

Page 38: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2238

ACMACM 要学习那些知识?要学习那些知识?搞 ACM 有哪些用处?能找到好工作(顶尖的 IT 公司)

Page 39: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2239

第二部分第二部分

一、 语言是最重要的基本功

Page 40: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2240

C 和 C++JavaC++ STL 用法

Page 41: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2241

通过以上的分析,我们可以看出仅就 ACM 竞赛而言,对语言的掌握并不要求十分全面,但是对于经常用到的部分,必须十分熟练,不允许有半点不清楚的地方,

Page 42: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2242

二、以数学为主的基础知识十分重二、以数学为主的基础知识十分重要 要 离散数学——作为计算机学科的基础,

离散数学是竞赛中涉及最多的数学分支,其重中之重又在于图论和组合数学,尤其是图论。

数论——以素数判断和同余为模型构造出来的题目往往需要较多的数论知识来解决,这部分在竞赛中的比重并不大,但只要来上一道,也足以使知识不足的人冥思苦想上一阵时间。

Page 43: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2243

计算几何——计算几何相比于其它部分来说是比较独立的,就是说它和其它的知识点很少有过多的结合,较常用到的部分包括——线段相交的判断、多边形面积的计算、内点外点的判断、凸包等等。

线性代数——对线性代数的应用都是围绕矩阵展开的,一些表面上是模拟的题目往往可以借助于矩阵来找到更好的算法。

Page 44: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2244

三、数据结构与算法是真正的核心 三、数据结构与算法是真正的核心 数据结构与算法是真正的核心 虽然数学十分十分重要,但是如果让三

个只会数学的人参加比赛,我相信多数情况下会比三个只会数据结构与算法的人得到更为悲惨的结局。

Page 45: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2245

算法:搜索,主要是回溯和分支限界法 常用算法中的另一类是以“相似或相同子问题”为核心的,包括递推、递归、贪心法和动态规划

Page 46: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2246

四、团队配合 五、练习、练习、再练习 (做 200 就拿奖)

北大的在线系统 poj.grids.cn (大一,大二用 17-19章)

北大的在线系统 acm.pku.edu.cn哈尔滨工程大学 oj :acm.hrbeu.edu.cn

Page 47: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2247

如何比赛? 3 人组队

可以携带诸如书、手册、 程序清单等参考资料;不能携带任何可用计算机处理的软件或数据、不能携带任何类型的通讯工具;

可能收到的反馈信息包括: Compile Error -- 程序不能通过编译。Run Time Error -- 程序运行过程中出现非正常中断。 Time Limit Exceeded

-- 运行超过时限还没有得到输出结果。 Wrong Answer -- 答案错误。 Presentation Error

-- 输出格式不对,可检查空格、回车等等细节。 Accepted -- 恭喜恭喜!

Page 48: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2248

首先根据解题数目进行排名。 如果多支队伍解题数量相同,则根据总用时加

上惩罚时间进行排名。 总用时和惩罚时间由每道解答正确的试题的用时加上惩罚时间而成。

每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次错误的运行将被加罚20分钟时间,未正确解答的试题不记时。

如何排名?

Page 49: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2249

比赛形式– 1 支队伍 1台机器(提供打印服务)– 上机编程解决问题(可带纸质资料)– 实时测试,动态排名

试题– 6-10 题– 全英文(可以带字典)

时间:持续 5 个小时

Page 50: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2250

ACM .vs. ACM .vs. 校程序设计竞赛校程序设计竞赛ACM 竞赛

– 团队合作精神– 即时提交,通过所有数据才能得分– 全英文题目,题目考察范围广

校程序设计竞赛– 个人编程能力的比拼– 中文或者英文题目,考察编程基本功

Page 51: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2251

ACMACM 队队员的基本原则队队员的基本原则基本要求

– 人品好– 愿意花时间在这项赛事上– 有团队合作精神

能力要求– 程序设计– 英语科技文献阅读– 数学数学

Page 52: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2252

nefu-ACMnefu-ACM* * 集训队集训队 **暑假进暑假进

行行

Page 53: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2253

开课目的开课目的– 为 nefu ACM 代表队培养后备人才– 提高分析问题和应用计算机编程解

决问题的能力– 培养必要的自学能力– 培养学生的协调和沟通能力– 体会学习的快乐

Page 54: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2254

如何入门呢如何入门呢 ??

Page 55: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2255

ACMACM 题目特点题目特点 ::由于 ACM 竞赛题目的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。这也是困扰初学者的一大问题。

下面,分类介绍:

Page 56: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2256

先看一个超级简单的题目:先看一个超级简单的题目:计算 a+b 的题目

Sample input:1 510 20

Sample output:630

Page 57: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2257

初学者很常见的一种写法:初学者很常见的一种写法:#include<stdio.h>void main(){

int a,b;

scanf(“%d %d”,&a,&b);

Printf(“%d”,a+b);}

Page 58: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2258

有什么问题呢?有什么问题呢?这就是下面需要解决的问题

Page 59: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2259

第二部分第二部分

基本输入输出

Page 60: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2260

输入输入 __ 第一类:第一类:输入不说明有多少个 Input Block, 以 EO

F 为结束标志。

Page 61: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2261

源代码:源代码:#include <stdio.h> int main() {

int a,b; while(scanf("%d %d",&a, &b) != EO

F) printf("%d\n",a+b); }

Page 62: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2262

本类输入解决方案:本类输入解决方案: C 语法:

while(scanf("%d %d",&a, &b) != EOF) {     .... }

C++ 语法:while( cin >> a >> b ) {     .... }

Page 63: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2263

说明(说明( 11 ):):

1. Scanf函数返回值就是读出的变量个数,如: scanf( “%d %d”, &a, &b ); 如果只有一个整数输入,返回值是 1 ,如果有两个整数输入,返回值是 2 ,如果一个都没有,则返回值是 -1 。

2. EOF 是一个预定义的常量,等于 -1 。

Page 64: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2264

输入输入 __ 第二类:第二类:输入一开始就会说有 N 个 Input Block,下面接着是 N 个 Input Block 。 参见:

Page 65: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2265

源代码:源代码:#include <stdio.h> int main() { int n,i,a,b;

scanf("%d",&n);for(i=0;i<n;i++){ scanf("%d %d",&a, &b); printf("%d\n",a+b); }

}

Page 66: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2266

本类输入解决方案:本类输入解决方案: C 语法:

scanf("%d",&n) ; for( i=0 ; i<n ; i++ ) {     .... }

C++ 语法:cin >> n; for( i=0 ; i<n ; i++ ) {     .... }

Page 67: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2267

输入输入 __ 第三类:第三类:输入不说明有多少个 Input Block, 但以某个特殊输入为结束标志。参见:

Page 68: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2268

源代码:源代码:#include <stdio.h> int main() {

int a,b;while(scanf("%d %d",&a, &b) &&(a!=0 && b!=0))

printf("%d\n",a+b); }

Page 69: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2269

本类输入解决方案:本类输入解决方案: C 语法:

while(scanf("%d",&n) && n!=0 ) {     .... }

C++ 语法:while( cin >> n && n != 0 ) {     .... }

Page 70: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2270

相关资料相关资料数学知识 离散、组合 数论、图论 计算几何算法 & 数据结构 基本数据结构搜索、分治动态规划贪心……

Page 71: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2271

http://acm.hdu.edu.cn/去哪里练习?

Page 72: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2272

Page 73: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2273

常见问题:常见问题:1 、需要什么基础? ( C/C++ )

3 、如何加入集训队 ? (200 && 申请 )2 、英语不好怎么办? (问题不大 )

Page 74: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2274

想对大家说的话…

Page 75: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2275

课后任务:课后任务: QQQQ 群号 满了群号 满了1 、熟悉 http://acm.hdu.edu.cn2 、完成在线练习:完成第 11卷 100 个题

3、可以看群共享里的这 100 题的答案4 、大一做 50题就可以找我5、大二做 80题可找我6、春天开学有 ACM 选拔赛,寒假请努力7、我校的 OJ: acm.nefu.edu.cn

Page 76: 2015-12-26 1 ACM 快乐竞 赛 计算机系 陈宇 2015-12-26 2 ACM 入门.

23/4/2276

See you See you next next week!week!