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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题的能力 培养必要的自学能力 培养学生的协调和沟通能力 体会学习的快乐
2020/12/7
4
ACM/ICPC in China
中国大陆高校从1996年开始参加ACM/ICPC—— 前六届中国赛区设在上海,由上海大学承办; 2002年:清华和西安交大; 2003年:清华和中山; 2004年:北大和上海交大; 2005年:川大、北大和浙大; 2006年:上海大学、清华和西电; 2007年:北航、南航、吉大、西华; 2008年:哈工程、北交、中科大、杭电、西南民大; 2009年:哈工大、中科大、NIT、武大、东华; 2010年:天大、福大、川大、哈工程、浙江理工;
2020/12/7
7
2010年的风采
2020/12/7
8
2020/12/7
9
2020/12/7
10
2020/12/7
11
2020/12/7
12
2020/12/7
13
2020/12/7
14
2020/12/7
15
2020/12/7
16
2020/12/7
17
2020/12/7
18
2020/12/7
选赛
2020/12/7
6
预期赛事(今后每年)
3~4月,举行校内大赛(暨选拔赛) 4月, ACM全国邀请赛 5月,参加黑龙江省大学生程序设计大赛 6月,参加东北4省大学生程序设计大赛 10~11月,参加ACM/ICPC亚洲区比赛(至少参加4~
5个赛区的比赛) 另外,每学期至少有三次月赛以及适当的练习赛
ACM程序设计算法原理和ACM入门
第一讲
算法原理和ACM入门
(Introduction to ACM)
2020/12/7
2
我校的ACM在线评测系统
acm.nefu.edu.cn 课件下载地址: acm.nefu.edu.cn/kj/suanfa01.ppt
2020/12/7
3
开课目的
为林大ACM代表队培养后备人才 提高分析问题和应用计算机编程解决
对于所研究的问题来说是基本(或者说是主要) 的原操作,以该基
本操作在算法中重复执行的次数作为算法运行时间的衡量准则。
这个原操作,多数情况下是最深层次循环体内的语句中的原操作。
例如:
for(i=1;i<=n;++i)
for( j=1;j<=n;++j)
{ c[i,j]=0;
for(k=0;k<=n;++k)
例如:
for(j=1;j<=n;++j)
for(k=1;k<=n;++k) ++x;
语句“++x、k<=n、++k”的频度是n2, 语句“ j=1、k=1”的频度是1, 语句“j<=n;++j”的频度是n。 算法运行时间为:3*n2+2n+2。
2020/12/7
27
再看看这个代码:
对较复杂的算法计算算法的运行时间,经常从算法中选取一种
算法的时间效率是问题规模的函数。假如, 随着问题规模n的增长,算法执行时间的增长率 和f(n)的增长率相同,则可记作:T(n)=Ο(f(n)), 称T(n)为算法的渐近时间复杂度(Asymptotic Time Complexity),简称时间复杂度。Ο是数量 级的符号。
2020/12/7
26
一个算法中所有语句的频度之和构成了该算法的运行时间。
2020/12/7
32
【例2】变量计数之一。
(1) x=0;=0;
(2) for(k-1;<=n;++)
29
算法(渐进)时间复杂度,一般均表示为以下几种数量级的 形式(n为问题的规模,c为一常量):
Ο(1)称为常数级
Ο(logn)称为对数级
Ο(n)称为线性级
Ο(nc)称为多项式级
Ο(cn)称为指数级
Ο(n!)称为阶乘级
以上时间复杂度级别是由低到高排列的,其随规模n的增长 率见下图。
2020/12/7
➢ 设计算法——设计出复杂性尽可能低的算法 ➢ 选择算法——在多种算法中选择其中复杂性最低者
2020/12/7
23
评价算法
评价算法的三条主要标准是:
(1) 算法实现所耗费的时间;
(2) 算法实现所所耗费的存储空间,其中
主要考虑辅助存储空间;
(3) 算法应易于理解,易于编码,易于调
试等等。
2020/12/7
2020/12/7
5
ACM in NEFU
2006年9月,第一次参加此类比赛(黑龙江省赛) 2006~2010,每年5月——
黑龙江省第1~5届大学生程序设计竞赛 2007~2010,每年6月——
东北地区第1~4届大学生程序设计竞赛 2006~2010,每年9月——11月 第29~34届ACM国际大学生程序设计竞赛亚洲区预
c[i,j]= c[i,j]+a[i,k]*b[k,j];
}
Biblioteka Baidu
2020/12/7
28
当一个算法的算法运行时间为n2+n+1, 由于n2+n+1与n2的数量级相等(该表达式 当n足够大时约等于n2), 我们说这个算法 的渐进时间复杂度(简称算法的时间复杂 度)为:T(n)=O(n2)。
2020/12/7
30
图 T(n)与规模n的函数关系
2020/12/7
31
【例1】交换i和j的内容。
Temp=i;i=j;j=temp;
以上三条单个语句的频度均为1,该算法段的执行 时间是一个与问题规模n无关的常数。算法的时间复杂 度为常数阶,记作T(n)=Ο(1)。
如果算法的执行时间不随着问题规模n的增加而增 长,即使算法中有上千条语句,其执行时间也不过是一 个较大的常数。此类算法的时间复杂度是Ο(1)。
24
和算法执行时间相关的因素:
1)问题中数据存储的数据结构 2)算法采用的数学模型 3)算法设计的策略 4)问题的规模 5)实现算法的程序设计语言 6)编译算法产生的机器代码的质量 7)计算机执行指令的速度
2020/12/7
25
算法效率的衡量方法
通常有两种衡量算法效率的方法:
1)事后统计法(有缺点,较少使用) 2)事前分析估算法
19
2020/12/7
20
2020/12/7
21
2020/12/7
22
第一部分 算法概述
算法分析(Algorithm Analysis):对算法所需 要的两种计算机资源——时间和空间进行估算
➢ 时间复杂性(Time Complexity) ➢ 空间复杂性(Space Complexity)
算法分析的目的:
相关文档
最新文档