初识ACM

合集下载

ACM 程序设计竞赛入门:第1讲 快速入门

ACM 程序设计竞赛入门:第1讲 快速入门
/showproblem.php ?pid=1095
2020/12/10
29
Problem Description
Your task is to Calculate a + b.
Input
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
Sample input:
也可以写成: cin.getline(name,4);
2020/12/10
26
输出(1):
一个Input Block对应一个Output Block, Output Block之间没有空行。 参见:HDOJ_1089
/showproblem.php ?pid=1089
}
while(scanf(……..)&&……) { ....
}
C++语法:
while( cin >> n && n != 0 ) {
.... }
2020/12/10
18
输入(4):
以上几种情况的组合
/showproblem.php ?pid=1092
/showproblem.php ?pid=1093

lesson2初识ACM

lesson2初识ACM
int n,i,a,b;
scanf("%d",&n);
for(i=0;i<n;i++) {
scanf("%d %d",&a, &b); printf("%d\n",a+b); } }
21 2019/11/15
本类输入解决方案:
C语法:
scanf("%d",&n) ;
for( i=0 ; i<n ; i++ ) {
再思考:
1. hdoj_1013(Digital Roots )貌似简单, 但是有陷阱在里面。
提示:输入数据可能很长,能按照整形进 行处理吗?
34 2019/11/15
输出_第一类:
一个Input Block对应一个Output Block, Output Block之间没有空行。 参见:HDOJ_1089
/showproblem.php?pid=109 3
/showproblem.php?pid=109 4
26 2019/11/15
输入_第五类:
输入是一整行的字符串的 参见:HDOJ_1048
/showproblem.php?pid=104 8
18 2019/11/15
说明(1):
1. Scanf函数返回值就是读出的变量个数, 如:scanf( “%d %d”, &a, &b ); 如果只有一个整数输入,返回值是1, 如果有两个整数输入,返回值是2,如 果一个都没有,则返回值是-1。
2. EOF是一个预定义的常量,等于-1。
19 2019/11/15
27 2019/11/15

acm程序设计教程 course(1)初识ACM

acm程序设计教程 course(1)初识ACM

2011-9-5
38



2009-6-9 讨论湖南省大学生计算机程 序设计竞赛湖南师范大学具体实施方案 2009-6-10 下发2009年湖南省大学生计 算机程序设计竞赛湖南师范大学选拔赛 通知(数计院、物信院、工学院) 2009-6-15 正式选拔 2009-7-4 开学典礼 7-10——8-10 暑假集训
2011-9-5
6
ACM/ICPC in China

中国大陆高校从1996年开始参加ACM/ICPC—— 前六届中国赛区设在上海,由上海大学承办; 2002年由清华大学和西安交通大学承办; 2003年由清华大学和中山大学承办。 2004年由北京大学和上海交通大学承办。 2005年由四川大学、北大和浙大承办。 2006年由上海大学、清华和西电承办。 2007年:北航、南航、吉大、西华 2008年:哈工程、北交、合肥、杭电、西南民大
35
2011-9-5
今年比赛

2011(9.14-9.15) 湖南农业大学
2011-9-5
36
第三部分
我校ACM相关情况
2011-9-5 37
组建过程


Байду номын сангаас
2009-5-7 ACM/ICPC华中南区程序设 计大赛选拔考试(小范围,数计学院) 2009-5-8 组队报名、竞赛介绍、简单 培训 5月29日至5月31日 参加ACM/ICPC华 中南区程序设计大赛(湖南大学)
参赛队组成




ACM-ICPC以团队的形式代表各学校参赛, 每个 赛区的优胜队伍将获得参加ACM国际大学生程序 设计竞赛全球总决赛资格。 亚洲区的高校可以组队参加亚洲的任何一个或者 几个赛区的比赛,但每所高校最多只能有一队可 以获得参加全球世界决赛的资格。 每队由一名教练和三名队员组成, 有些赛区还允许 有一名候补队员。 亚洲区的每位参赛选手在一年内最多可参加两个 赛区的亚洲区预选赛, 每位选手最多可以参加五届 亚洲区预选赛和两届全球总决赛。

(lecture_01)初识ACM_20070925_simplePPT精品文档71页

(lecture_01)初识ACM_20070925_simplePPT精品文档71页
20 08.01.2020
ACM题目特点:
由于ACM竞赛题目的输入数据和输出数 据一般有多组(不定),并且格式多种 多样,所以,如何处理题目的输入输出 是对大家的一项最基本的要求。这也是 困扰初学者的一大问题。
下面,分类介绍:
21 08.01.2020
先看一个超级简单的题目:
/showproblem.php?pid=108 9
Run Time Error -- 程序运行过程中出现非正常中断。
Time Limit Exceeded

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

-- 输出格式不对,可检查空格、回车等等细节。
Accepted -- 恭喜恭喜!
7 08.01.2020
8 08.01.2020
ACM in HDU
2019年9月,第一次参加省赛(邀请赛)
2019年5月,浙江省“舜宇”杯首届大学生程序设计大赛
2019年11~12月,第29届ACM亚洲区北京和上海赛区比赛
2019年5月,浙江省第二届“舜宇”杯大学生程序设计大 赛
少参加4~5个赛区的比赛) 另外,每学期至少有三次月赛以及适当
的练习赛
10 08.01.2020
如何比赛? 3人组队
可以携带诸如书、手册、 程序清单等参考资料; 不能携带任何可用计算机处理的软件或数据、不 能携带任何类型的通讯工具;
可能收到的反馈信息包括:
Compile Error -- 程序不能通过编译。
现在,ACM / ICPC已成为世界各国大学生中最 具影响力的国际计算机赛事。(非官方)

ACM入门技巧讲课(1)

ACM入门技巧讲课(1)

10
7
4
9
2
8
例二:唯一的雪花
题目描述:
输入一个长度为n(n<=1e6)的序列A,找到一个尽量长的连
续子序列 ~ R ,使得该序列中尺取法通常是指对数组保存一对下标(起点、终点),
然后根据实际情况交替推进两个端点直到得出答案的方
法,因为这种方法像尺取虫的爬行方式所以得名。
枚举排列
例四:弱键
题目描述:
给出k(4<=k<=5000)个互不相同的整数组成的序列 ,
判断是否存在4个整数 , , , ,和(1<=p<q<r<s<=k),
使得 > > > ,或者 < < < 。
题解:
首先联想到4个数和为0的题目,那个题就是再枚举的基础上不断优化,有了枚举
思路:给区间排个序,右端点从小到大,右端点相同时,左端点从
大到小。
例四:国王游戏
题目描述:
恰逢 H 国国庆,国王邀请 n(1<=n<=1e5) 位大臣来玩一个有奖游戏。首先,
他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个正整
数。然后,让这 n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都
即,La*Ra < Lb*Rb
03
尺取法
尺取法
尺取法通常是指对数组保存一对下标(起点、终点),
然后根据实际情况交替推进两个端点直到得出答案的方
法,因为这种方法像尺取虫的爬行方式所以得名。
例一:Subsequence
题目描述:
给定长度为n (n<=1e7)的整数数列以及整数S,求出总和

杭电acm初学者通用课件

杭电acm初学者通用课件
该竞赛旨在通过解决一系列复杂的编程问题,来考察参赛者 的算法设计、数据结构选择、编程技巧等方面的能力,以及 团队协作和解决问题的能力。
ACM/ICPC的意义
1 2 3
提高编程能力和算法设计能力
ACM/ICPC的题目通常涉及各种算法和数据结构 ,通过解决这些题目,可以提高编程能力和算法 设计能力。
培养团队协作和沟通能力
入/删除操作。
树形数据结构
包括二叉树、多叉树、B树 等。这些数据结构用于表 示层次关系和进行高效的
查找操作。
图数据结构
由节点和边组成的数据结 构,用于表示对象之间的 关系。常见的图数据结构 有邻接矩阵和邻接表等。
03
刷题技巧
如何选题
难度适中
选择难度适中的题目,逐步提升解题能力 。
覆盖面广
尽量选择涉及多种知识点的题目,提高知 识掌握的全面性。
对算法的原理和实现细节理解不足,导致 在解题过程中出现错误。
代码实现错误
由于编程语言和技巧不熟练,导致代码实 现出现错误。
忽视题目要求
在解题过程中忽视题目的特殊要求,导致 答案不符合题目要求。
高分选手的共性
01 良好的数学基础
高分选手通常具备扎实的数学 基础,能够快速理解和运用数 学原理。
02 高效的算法思维
详细描述
参与开源项目可以了解实 际项目中的算法和数据结 构应用,组织线上讨论可 以与其他人交流学习经验 ,拓宽视野和思路。
总结词
积极参与开源社区和线上 讨论。
详细描述
通过参与开源社区和线上 讨论,可以了解最新的技 术动态和趋势,同时也可 以结交志同道合的朋友, 共同进步。
06
结束语
不断实践和学习
高分选手在解题时能够迅速找 到合适的算法,并高效实现。

ACM新手入门指南

ACM新手入门指南

ACM/ICPC新手入门指南前言:这篇指南不对ACM/ICPC国际大学生程序设计竞赛进行介绍,计算机学子如果不了解的可以在百度上进行搜索查询,这里介绍的只是一个计算机学生想要在ACM/ICPC里进行发展的初学者。

内容比较简单通俗,完全是给新接触的人看的,已经接触过的请飘过,该干嘛的干嘛去。

语言关:要进行程序设计,也就必然要熟悉编程语言,只要掌握了一门语言,就可以进行ACM训练了。

一般通用语言如C、C++、JAVA都可以,这三种语言都有自己的优势和缺点,C在效率方面比较好;但C++封装了输入输出流,方便了我们的操作也减少出错的可能性,而且C++提供了非常强大的标准模版库(STL),使得很多在C上实现起来比较麻烦的代码,在C++上却非常方便;JAVA在大型工程和安全方面都有比较独特的优势,但在ACM里面却不是一种优秀的语言,因为JAVA的执行效率要比C、C++慢很多,如果题目限时比较紧的话,就不适合用JAVA,当然JAVA为我们提供了很方便的高精度运算(大整数运算),所以个人认为,刚学完C的可以用纯C来写训练,在训练过程中可以学学C++,有时间的把STL也好好学学,这样可以减少很多不必要的劳动。

初次接触ACM训练的同学经常会遇到问题,就是输入和输出问题,所以如果对语言的输入输出问题不是很熟悉的话,要抽几天时间重点看看,特别有些初学者在输出时总会输出冗余信息,可能认为有交互性吧,但这是ACM不允许的,它不需要任何交互性。

不严格按照题目要求进行输入输出的程序是无法通过系统测试的。

熟悉在线评测系统在线评测系统,英文叫Online Judge,(简称OJ)里面提供了很多题目给我们平时训练之用。

这里以浙江大学的在线评测系统为例,网址是 先在上面进行注册,注册完后就可以进行题目的训练了,点击主页上的“Problems”,就可以看到里面的题库,可以选任何一个题来做,里面的题目不是由易到难进行排列,而初学者要选择比较简单的题目来做。

ACM基础算法入门教程

ACM基础算法入门教程

ACM基础算法入门教程ACM(ACM International Collegiate Programming Contest)是国际大学生程序设计竞赛的缩写,被认为是计算机领域最有权威和最具挑战性的竞赛之一、ACM竞赛要求参赛者在规定的时间内,根据给出的问题,编写出能在规定时间内运行并给出正确答案的程序。

参加ACM竞赛不仅可以锻炼算法思维,提高编程实力,还可以拓宽知识领域和增加竞争力。

在这个ACM基础算法入门教程中,我们将介绍一些常用的基础算法和数据结构,帮助初学者更好地理解和掌握ACM竞赛所需的算法知识。

一、排序算法排序算法是ACM竞赛中最常用的算法之一,能够帮助我们按照一定的规则将数据进行排序,从而解决一些需要有序数据的问题。

1.冒泡排序:通过多次比较和交换来实现,每次迭代将最大的值沉到最底部。

2.快速排序:选择一个基准元素将数组分为两部分,一部分都小于基准元素,一部分都大于基准元素,递归排序子数组。

3.归并排序:将数组不断二分,将相邻两个子数组排序后再合并成一个有序数组。

4.插入排序:从第二个元素开始,依次将元素插入已排序的子数组中。

二、查找算法查找算法可以帮助我们在一组数据中找到目标元素,从而解决一些需要查找特定数据的问题。

1.顺序查找:逐个扫描数据,直到找到目标元素或扫描结束为止。

2.二分查找:对已排序的数组进行查找,不断将数组二分直到找到目标元素的位置。

3.哈希查找:通过计算数据的哈希值找到对应的存储位置,实现快速查找。

三、字符串匹配算法字符串匹配算法可以帮助我们在一组字符串中寻找特定模式的子字符串,从而解决一些需要在字符串中查找其中一种规律的问题。

1.暴力匹配算法:对目标字符串的每个位置,逐个将模式串进行匹配,直到找到或匹配结束为止。

2.KMP算法:通过已匹配的部分信息,尽量减少字符比较的次数。

3. Boyer-Moore算法:通过预先计算模式串中每个字符最后出现位置的表格,以及坏字符规则和好后缀规则,来实现快速匹配。

acm初识

acm初识

4.3 编程能力
由易到难,培养兴趣和 和信心
积累自己的算法
养成动脑和动手的习惯
4.4 对科技前沿迅速了解
生物信息学
并行计算 博弈论 线性规划 拓扑学 运筹学
人工智能
4.5 对选手前途的影响
找工作
出国
国内深造
好成绩对未来十年的 巨大影响 现在需要:专注,集 中精力,每段时间做好 一件事情

1.3 竞赛影响力
把各高校ACM/ICPC作为评价信息学科 的重要指标
只要进入总决赛,就意味着某高校信 息相关专业的水平具有世界较高的排名 一个好的成绩可以抵得上任何一封推 荐信 是信息学及其分支发展的晴雨表
2. 例题
2.1 例一:Back to Mother Ship 2.2 例二:Ferry
1.2 竞赛机制
选拔机制:区域预赛和国际决赛两个阶段;各预 赛区第一名自动获得参加世界决赛的资格,世界决 赛安排在每年的3~4月举行,而区域预赛安排在上 一年的9~12月在各大洲举行
赞助商:Google、AT&T、Microsoft,IBM……
队员组成:三名正式队员,扮演不同的角色;一 名候补队员 历年前名队伍:上海交通大学,复旦大学,清华 大学,南京大学,中国人民大学,中山大学,北京 大学, ……
3. 带队参赛体会
实力决定一切 ICPC vs. 数学建模 平时积累至关重要
我们的机会
4. 竞赛对选手个人的影响
4.1 数学水平
4.2 英语水平
4.3 编程能力
4.4 对科技前沿迅速了解
4.5 对选手前途的影响
4.1 数学水平
学习数学本质 信息学专业的学生不要把教 科书上的算法照抄到程序中, 不敢有丝毫改动

ACM入门讲座-LX

ACM入门讲座-LX
11
关于 ACM题目的输入输出 ACM题目的输入输出
由于ACM竞赛题目的输入数据和输出数据一 由于ACM竞赛题目的输入数据和输出数据一 般有多组(不定),并且格式多种多样, 所以,如何处理题目的输入输出是对大家 的一项最基本的要求。这也是困扰初学者 的一大问题。
12
先看一个非常简单的题目
13
A+B Problem
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line. For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input. Sample input: 1 5 Sample output: 6
5
ACM-ICPC竞赛内容 ACM-ICPC竞赛内容
竞赛涵盖的范围很广,大致划分如下: Direct(简单题),Computational Direct(简单题),Computational Geometry(计算几何),Number Geometry(计算几何),Number Theory (数论),Combinatorics(组合数学), (数论),Combinatorics(组合数学), Search Techniques(搜索技术), Techniques(搜索技术), Dynamic Programming(动态规划), Programming(动态规划), Graph Theory(图论),Other(其他) Theory(图论),Other(其他)

acm竞赛知识点

acm竞赛知识点

acm竞赛知识点
ACM竞赛是ACM(Association for Computing Machinery,美
国计算机协会)举办的一种国际化的大学生程序设计竞赛,其目的是通过组织一系列的竞赛活动,促进计算机科学教育、培养计算机编程能力以及提升学生的团队合作意识和解决实际问题的能力。

ACM竞赛的知识点主要包括以下几个方面:
1. 数据结构和算法:熟悉常见的数据结构,如数组、链表、栈、队列、树、图等,以及常见的算法,如排序、查找、动态规划、贪心算法、图算法等。

2. 编程语言和语法:熟练掌握至少一种编程语言,如C++、Java、Python等,了解语法和基本操作,并能够灵活运用编程
语言解决实际问题。

3. 数学基础知识:包括数论、组合数学、概率与统计、线性代数等,这些知识在解决ACM竞赛中的一些数学问题时会起到
重要的作用。

4. 图论和网络流:了解图论的基本概念和算法,如最短路径、最小生成树、拓扑排序等,以及网络流的基本概念和算法,如最大流最小割定理、Edmonds-Karp算法等。

5. 动态规划:了解动态规划的基本思想和应用场景,可以通过分阶段决策的方法解决一些复杂的问题。

6. 数值计算和近似算法:了解数值计算的基本方法和近似算法的基本概念,如数值积分、牛顿迭代法、蒙特卡洛方法等。

7. 计算几何:了解计算几何的基本概念和算法,如点与直线的关系、线段相交问题、凸包等。

8. 字符串处理:了解字符串的基本操作和常见算法,如字符串匹配、前缀树、后缀数组等。

以上只是ACM竞赛的一些基本知识点,实际参加竞赛时,还
需要了解竞赛的规则、技巧和策略,并进行大量的练习和训练,掌握解决实际问题的能力。

ACM程序设计算法原理和ACM入门教材

ACM程序设计算法原理和ACM入门教材

计算机科学基础知识回顾
回顾计算机科学的基础知识,包括数据类型、变量、控制结构等。
数据结构和算法的关系
解释数据结构和算法之间的关系,如何选择适合特定问题的数据结构来提高 算法效率。
常见数据结构:数组、链表、栈、队 列
数组
存储一组相同类型的元素,支持随机访问 和修改元素。

后进先出的数据结构,支持快速插入和删 除操作。
博弈论的基本概念和算法
介绍博弈论的基本概念和解决方法,如最大最小化、alpha-beta剪枝等。
计算几何基础知识
讲解计算几何的基本概念和算法,如点、线、面的表示和计算。
动态数据结构的应用
探讨动态数据结构的应用,如平衡二叉树、哈希表等。
字符串和图的高级算法
介绍字符串和图的高级算法,如正则表达式匹配、最小割最大流等。
排序算法的分类和性能分析
1 分分类排序
根据排序算法的思想和实现方式进行分类。
2 性能分析
评估不同排序算法的时间和空间复杂度。
快速排序和归并排序
1
归并排序
2
基于分治法,通过将序列分为两部 分并对每部分进行排序,然后归并
排序。
快速排序
基于分治法,通过比较和交换元素 实现排序。
算法分析和复杂度
介绍算法分析的基本概念和复杂度表示方法,如时间复杂度和空间复杂度。
高精度计算的应用
讲解高精度计算的基本原理和应用场景,如大整数运算、浮点数精度等。
高级算法的问题、优化和扩展
讨论高级算法的常见问题、优化技巧和算法扩展,如分支限界法、动态规划优化等。
好的编程习惯和技巧
分享好的编程习惯和技巧,如代码规范、调试技巧等。
经典题目和解题思路

acm知识点

acm知识点

acm知识点ACM(ACM International Collegiate Programming Contest)是国际大学生程序设计竞赛的简称,是全球范围内最具影响力的大学生计算机竞赛之一。

ACM竞赛旨在培养学生的计算机编程能力、团队合作精神和解决问题的能力。

在ACM竞赛中,选手需要在规定的时间内解决一系列的编程问题,通过编写程序来实现问题的解决。

ACM竞赛的知识点非常广泛,涵盖了计算机科学与技术的各个领域。

以下是一些ACM竞赛中常见的知识点:1. 数据结构:包括数组、链表、栈、队列、树、图等。

选手需要熟悉各种数据结构的特点、操作和应用场景,能够灵活运用它们解决问题。

2. 算法:包括排序算法、查找算法、图算法、动态规划等。

选手需要了解各种算法的原理和实现方法,能够根据问题的特点选择合适的算法。

3. 数学:包括数论、概率论、组合数学等。

选手需要掌握一些基本的数学知识,能够运用数学方法解决问题。

4. 字符串处理:包括字符串匹配、字符串编辑距离、正则表达式等。

选手需要熟悉字符串的基本操作和常见算法,能够高效地处理字符串相关的问题。

5. 图论:包括最短路径、最小生成树、网络流等。

选手需要了解图的基本概念和算法,能够解决与图相关的问题。

6. 动态规划:动态规划是一种常见的问题求解方法,通过将问题分解为子问题并保存子问题的解,最终得到原问题的解。

选手需要熟悉动态规划的基本思想和常见的动态规划算法。

7. 计算几何:包括点、线、面的表示和计算、凸包等。

选手需要了解基本的几何概念和算法,能够解决与几何相关的问题。

8. 搜索算法:包括深度优先搜索(DFS)、广度优先搜索(BFS)、回溯法等。

选手需要熟悉各种搜索算法的原理和应用,能够灵活运用它们解决问题。

9. 模拟算法:模拟算法是一种通过模拟问题的过程来解决问题的方法。

选手需要能够根据问题的要求,编写相应的模拟程序。

10. 动态数据结构:包括并查集、线段树、树状数组等。

ACM 入门精品PPT课件

ACM 入门精品PPT课件

2020/10/21
10
如何排名?
首先根据解题数目进行排名。 如果多支队伍解题数量相同,则根据总用时加上惩
罚时间进行排名。 总用时和惩罚时间由每道解答正确的试题的用时加
上惩罚时间而成。 每道试题用时将从竞赛开始到试题解答被判定为正
确为止,其间每一次错误的运行将被加罚20分钟时 间,未正确解答的试题不记时。
州);
2020/10/21
7
ACM in XTU
2004年,第一次参加亚洲区预选赛(网络预赛) 2005~2011,每年10月左右——
湖南省第1~6届大学生程序设计竞赛 2004~2010,每年10~12月——
第29~35届ACM国际大学生程序设计竞赛 亚洲区预选赛
2020/10/21
8
预期赛事(今后每年)
校程序设计竞赛
个人编程能力的比拼 中文或者英文题目,考察编程基本功
2020/10/21
13
ACM队队员的基本原则
基本要求
人品好 愿意花时间在这项赛事上 有团队合作精神
能力要求
程序设计 英语科技文献阅读
数学
2020/10/21
14
开课目的
为湘大ACM代表队培养后备人才 提高分析问题和应用计算机编程解决
ACM
第一讲
ACM入门
(Introduction to ACM)
2020/10/21
2
第一部分
ACM简介
2020/10/21

What is ACM ?
ACM-(Association for Computing Machinery)
成立于计算机诞生次年,是目前计算 机学界中历史最悠久、最具权威性的 组织…

ACM 程序设计竞赛入门:第1讲 快速入门

ACM 程序设计竞赛入门:第1讲 快速入门

11
Sample Input 2 15 10 20
Sample Output 6 30
2020/12/10
12
Hdoj_1090源代码:
#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); } }
2020/12/10
24
说明(5_2):cin.getline的用法:
getline 是一个函数,它可以接受用户的输入的字符,直到已达 指定个数,或者用户输入了特定的字符。它的函数声明形式( 函数原型)如下:
istream& getline(char line[], int size, char endchar = '\n');
/showproblem.php ?pid=1094
2020/12/10
19
Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line.
202
输入不说明有多少个Input Block,以EOF 为结束标志。 参见:HDOJ_1089
/showproblem.php ?pid=1089
2020/12/10

ACM 程序设计竞赛入门:第1讲 快速入门

ACM 程序设计竞赛入门:第1讲 快速入门

2020/12/10
13
本类输入解决方案:
C语法:
scanf("%d",&n) ;
for( i=0 ; i<n ; i++ ) {
.... }
C++语法:
cin >> n;
for( i=0 ; i<n ; i++ )
{
....
}
2020/12/10
14
输入(3):
输入不说明有多少个Input Block,但以某 个特殊输入为结束标志。 参见:本校OJ1000
第一讲 快速入门
2020/12/10
1
ACM题目特点:
严格的输入、输出格式;有偏差则不能AC;
追求高效简洁的算法 。即便算法是正确的, 但策略过于复杂,会导致超时;
测试数据庞大;即便算法是正确的,如果在程 序实现时出现误差都会被严密的测试数据查出 而把程序判定为错误的;
强调解决实际问题的能力。赛题与实际应用的 联系很紧密,很多试题被出题者描述成一个有 趣的故事。因此,读题能力、分析能力相当重 要。
2020/12/10
4
困惑:用C/C++的输入/输出?
一般来说,差别不是太大,习惯就好; cin,cout 使用方便;scanf, printf 控制灵 活,在效率上有优势; 不要混用。 千万不要把cout和printf混用,因为cout 是带缓冲的而printf不带,所以会使得输 出的数据顺序混乱。
8
本类输入解决方案:
C语法:
while(scanf("%d %d",&a, &b) != EOF)

我的ACM入门指南

我的ACM入门指南

ACM/ICPC入门指南ACM简介:ACM:即国际大学生程序设计竞赛。

ACM国际大学生程序设计竞赛由国际计算机学界著名的ACM学会主办,是世界上规模最大、水平最高的国际大学生程序竞赛,每年举办一次。

可以说,ACM国际大学生程序设计竞赛已成为世界各国大学生最具影响力的国际级计算机类的赛事。

入门篇每个ACMer平时都是靠做题来训练的,现在就以杭州电子科技大学的OJ为例简单介绍一下如何使用OJ系统,在浏览器上输入杭电的网址首先,我们需要注册一个ID,点击Register new ID填写好自己的个人信息之后,点击submit,就可以完成注册了,然后在主页右上角的登陆框输入ID,密码便可以登陆,这个时候点击主页上的 Problem Archive 打开OJ的题库点击题号为 1000 的题目 A + B ProblemProblem Description 一栏写的就是题目的描述,很多初学者一开始对全英文的题目会很不习惯,这是很正常的,多查查字典,很快就可以习惯了,而且也可以提高自己的英语阅读水平、、、、、、、、Input 一栏写的是题目的输入要求,这里提示:每行将会有两个整数 A 和 B,输入进程一直延续到文件读完而结束(也就是要循环输入)Output 一栏写的是题目的输出要求,这里提示:对于每组数据,在一行中输入A+B的值接下来的 Sample Input 就是示例输入数据,而 Sample Output 就是相应的输出结果在读完题目之后,我们就可以在自己电脑上的编译器上编写代码,等编写好代码之后,点击页面中的Submit,接着把代码复制上去,再选择相应的语言完成之后点击Submit,就可以看到OJ系统对我们的程序的判题结果了这里返回了一个 Accepted,也就是说通过了OJ的判断,题目答对了!1000A +B Problem Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 158161 Accepted Submission(s): 50186 Problem Description Calculate A + B.Input Each line will contain two integers A and B. Process to end of file. Output For each case, output A + B in one line.Sample Input 1 1Sample Output 2Author HDOJStatistic | Submit | Discuss | Note#include<stdio.h>int main() {int a,b;while(scanf("%d %d",&a,&b)!=EOF)printf("%d\n",a+b);}而OJ可能会返回的结果总共有:Accepted 通过 Wrong Answer 错误 Compilation Error 编译错误Runtime Error 运行错误 Time Limit Exceeded 时间超出限制Presentation Error 输出格式错误 Memory Limit Exceeded 内存超出限制Output Limit Exceeded 输出了多余的东西OJ的使用基本上就是这样,十分的简单,想要成为一个强大的ACMer的话,赶紧多做题吧 ^_^,在这里同时推荐一些OJ给大家: 杭州电子科技大学的OJ,里面有很多简单的入门题,非常适合初学者/JudgeOnline 北京大学的OJ,是目前国内最具权威的OJ 官方的OJ,里面收录了历届亚洲地区赛和世界总决赛的题目/usacogate2美国信息学奥林匹克竞赛提高篇ACM比赛是涉及到很多算法的,大概包括图论、动态规划、计算几何、数论、搜索等等,如何提高自己相关的知识是十分关键的,当然前提是你首先必须得精通一门编程语言,一般ACM正规的比赛上可以选用的语言有C、C++和Java,但由于ACM比赛很看重时间空间等效率,所以大部分情况下Java是不占优势的,而80%以上的参赛选手使用的语言都是C++,因此在这里向大家推荐一本C++的经典书籍《C++ Primer》(第4版),里面详细地介绍了C++的各种语法和STL等知识,什么时候整本书看完了,理解了,你的C++才算达到基本的水平掌握好一门语言之后,就要开始系统地学习算法知识了,这里推荐《算法设计与分析基础》这本算法书设计的算法知识十分的全面,而且讲的知识比较基础,很容易就可以看懂,适合初学者,By the way,如果你是计算机学院的学生的话,学校会在大三(大四)教授算法课的时候发这本书下来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011暑期集训队
2013-5-9
31
2013-5-9
32
2013-5-9
33
2013-5-9
34
开课目的


为杭电ACM代表队培养后备人才 提高分析问题和应用计算机编程解决 问题的能力 培养必要的自学能力 培养学生的协调和沟通能力 体会学习的快乐
2013-5-9
35
如何入门呢?
2013-5-9
40
第二部分
基本输入输出
2013-5-9 41
输入_第一类:

输入不说明有多少个Input Block,以EOF 为结束标志。 参见:HDOJ_1089
/showproblem.ph p?pid=1089

2013-5-9
42
Hdoj_1089源代码:
输入_第四类:



以上几种情况的组合 /showproblem.p hp?pid=1092 /showproblem.p hp?pid=1093 /showproblem.p hp?pid=1094
2013-5-9 44
说明(1):
1.
Scanf函数返回值就是读出的变量个数, 如:scanf( “%d %d”, &a, &b ); 如果只有一个整数输入,返回值是1, 如果有两个整数输入,返回值是2,如 果一个都没有,则返回值是-1。 EOF是一个预定义的常量,等于-1。
2.
2013-5-9
45
2013-5-9
57
思考:

以下题目属于哪一类输入?

/showproblem .php?pid=1018
/showproblem .php?pid=1013
2013-5-9 58

输出_第一类:

一个Input Block对应一个Output Block, Output Block之间没有空行。 参见:HDOJ_1089
#include <stdio.h> int main() { int a,b;
while(scanf("%d %d",&a, &b) != EOF)
}
printf("%d\n",a+b);
2013-5-9
43
本类输入解决方案:


C语法: while(scanf("%d %d",&a, &b) != EOF) { .... } C++语法: while( cin >> a >> b ) { .... }
19
2013-5-9
20
2013-5-9
21
2013-5-9
22
2013-5-9
23
2013-5-9
24
2013-5-9
25
2006集训队全家福
2013-5-9
26
2007集训队全家福
2013-5-9
27
2008集训队全家福
2009暑期集训队
2013-5-9
29
2010暑期集训队
/showproblem .php?pid=1091

2013-5-9
49
Hdoj_1091源代码:
#include <stdio.h> int main() { int a,b;
while(scanf("%d %d",&a, &b) &&(a!=0 && b!=0))
/showproblem .php?pid=1089
输入_第二类:
ቤተ መጻሕፍቲ ባይዱ
输入一开始就会说有N个Input Block,下 面接着是N个Input Block。 参见:HDOJ_1090
/showproblem.ph p?pid=1090

2013-5-9
46
Hdoj_1090源代码:
#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); } }
2013-5-9 6
ACM/ICPC in China



中国大陆高校从1996年开始参加ACM/ICPC—— 前六届中国赛区设在上海,由上海大学承办; 2002年:清华和西安交大; 2003年:清华和中山; 2004年:北大和上海交大; 2005年:川大、北大和浙大; 2006年:上海大学、清华和西电; 2007年:北航、南航、吉大、西华; 2008年:哈工程、北交、中科大、杭电、西南民大; 2009年:哈工大、中科大、NIT、武大、东华; 2010年:天大、福大、川大、哈工程、浙江理工; 2011年:大连、北京、上海、成都、福州;
2013-5-9 52
输入_第五类:

输入是一整行的字符串的 参见:HDOJ_1048
/showproblem.ph p?pid=1048

2013-5-9
53
本类输入解决方案:


C语法: char buf[20]; gets(buf); C++语法: 如果用string buf;来保存: getline( cin , buf ); 如果用char buf[ 255 ]; 来保存: cin.getline( buf, 255 );

3~4月,举行校内大赛(暨选拔赛) 4~5月,参加浙江省大学生程序设计大赛 9~12月,参加ACM/ICPC亚洲区5个赛区比赛 另外,每学期至少有3次月赛以及适当的练习 赛
2013-5-9
9
如何比赛?

3人组队
可以携带诸如书、手册、 程序清单等参考资料; 不能携带任何可用计算机处理的软件或数据、不 能携带任何类型的通讯工具; 可能收到的反馈信息包括:
13

校程序设计竞赛

2013-5-9
ACM队队员的基本原则

基本要求

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

能力要求


程序设计 英语科技文献阅读

2013-5-9
数学
14
杭电参赛历程
2013-5-9
15
2013-5-9
16
2013-5-9
17
2013-5-9
18
2013-5-9
2013-5-9 55
说明(5_2):cin.getline的用法:




getline 是一个函数,它可以接受用户的输入的字符,直到已 达指定个数,或者用户输入了特定的字符。它的函数声明形 式(函数原型)如下: istream& getline(char line[], int size, char endchar = '\n'); 不用管它的返回类型,来关心它的三个参数: char line[]: 就是一个字符数组,用户输入的内容将存入在 该数组内。 int size : 最多接受几个字符?用户超过size的输入都将不被 接受。 char endchar :当用户输入endchar指定的字符时,自动结束。 默认是回车符。
2013-5-9
47
本类输入解决方案:


C语法: scanf("%d",&n) ; for( i=0 ; i<n ; i++ ) { .... } C++语法: cin >> n; for( i=0 ; i<n ; i++ ) { .... }
2013-5-9 48
输入_第三类:

输入不说明有多少个Input Block,但以 某个特殊输入为结束标志。 参见:HDOJ_1091
2013-5-9
56
说明(5_2)续


结合后两个参数,getline可以方便地实现: 用户最多输入指定个数的字符,如果超过, 则仅指定个数的前面字符有效,如果没有超 过,则用户可以通过回车来结束输入。 char name[4]; cin.getline(name,4,'\n'); 由于 endchar 默认已经是 '\n',所以后面那 行也可以写成: cin.getline(name,4);
2013-5-9
4
我们说的“ACM” 是什么?
2013-5-9
5
ACM/ICPC:
ACM主办的国际大学生程序设计竞赛 (International Collegiate Programming Contest),简称ACM / ICPC,自从1977年 开始至今已经连续举办35届。其宗旨是提供 一个让大学生向IT界展示自己分析问题和解 决问题的能力的绝好机会,让下一代IT天才 可以接触到其今后工作中将要用到的各种软 件。 现在,ACM / ICPC已成为世界各国大学生中 最具影响力的国际计算机赛事。(非官方)
2013-5-9
11
比赛形式

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


8-12题 全英文(可以带字典)

时间:持续5个小时
2013-5-9 12
ACM .vs. 校程序设计竞赛
相关文档
最新文档