《第一讲认识ACM》PPT课件.ppt_第1页
《第一讲认识ACM》PPT课件.ppt_第2页
《第一讲认识ACM》PPT课件.ppt_第3页
《第一讲认识ACM》PPT课件.ppt_第4页
《第一讲认识ACM》PPT课件.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一讲 认识ACM竞赛,信息学院计算机科学与技术系 李绍华 Mobile:,ACM:Association for Computing Machinery 美国计算机协会 ICPC:International Collegiate Programming Contest 国际大学生程序设计竞赛 ACM/ ICPC 由美国计算机协会主办的国际大学生程序设计竞赛 ACM/ICPC 是世界上公认的历史悠久、规模最大、水平最高的国际大学生程序设计竞赛。,ACM/ICPC的历史,发展 1970 Texas A&M University 1977 ACM会议期间第一次总决赛 1997 IBM开始赞助 2004 全球840所大学的4109支队伍 2010 第35届,全球7600支队伍 格局 早期 北美一枝独秀 最近 亚欧争霸 冠军榜 (达到3次) Shanghai Jiaotong University Saint Petersburg State University ITMO Stanford University,ACM/ICPC在中国大陆,大陆高校从1996年开始参加.,ACM/ICPC在中国大陆(Conti.),传统强校 第一集团 (Final 常客) 清华大学、上海交通大学 北京大学、浙江大学、中山大学、复旦大学 第二集团 (Regional金牌) 武汉大学、电子科大、国防科大 北师、天大、华工、福大、杭电、湖南大学、川大、北交、北理,如何竞赛?,选手 每支队伍3名队员,共用1台机器 形式 上机编程解决问题(可带纸质资料) 评判 提交程序,即时在线评判,动态排名 试题 8-10道英文试题,可带字典,每通过一题获得一个代表该题的气球 时间 持续5个小时(一般从上午9点到下午2点),期间可休息,如何竞赛?(Conti.),Whats required,算法能力 广度:熟悉各种算法 深度:特别精通某几类算法 编程能力 稳定的 coding ability 快速的 debug ability C/C+/JAVA 数学水平 数论、图论、解析几何等 团队精神 默契的团队配合,拒绝个人英雄主义,Algorithms,常见算法 Direct 简单题 Computational Geometry 计算几何 Number Theory 数论 Combination 组合数学 Search Techniques 搜索技术 Dynamic Programming 动态规划 Graph Theory 图论 Simulation 模拟题 String Management 字符串处理 Matching 匹配 Other,相关的知识,ACM需要哪些数学知识,1、离散数学 作为计算机学科的基础,离散数学是竞赛中涉及最多的数学分支,其重中之重又在于图论和组合数学,尤其是图论。 图论之所以运用最多是因为它的变化最多,而且可以轻易地结合基本数据结构和许多算法的基本思想,较多用到的知识包括连通性判断、DFS和BFS,关节点和关键路径、欧拉回路、最小生成树、最短路径、差分约束、二部图匹配和网络流等等。这部分的比重很大 ,往往也是竞赛中的难题所在。竞赛中设计的组合计数问题大都需要用组合数学来解决,组合数学中的知识相比于图论要简单一些,但有一部分知识要先对代数结构中的群论有初步了解才能进行学习。,2、数论 以素数判断和同余为模型构造出来的题目往往需要较多的数论知识来解决,这部分在竞赛中的比重并不大,但难度很高。素数判断和同余最常见的是在以密码学为背景的题目中出现,在运用密码学常识确定解答过程之后,核心算法往往要涉及数论的内容。 3、计算几何 计算几何相比于其它部分来说是比较独立的,就是说它和其它的知识点很少有过多的结合,较常用到的部分包括线段相交的判断、多边形面积的计算、内点外点的判断、凸包等等。 4、线性代数、概率论 、高等数学,最常见题型,Dynamic Programming(动态规划) Greedy(贪心) Complete Search(穷举) Flood Fill (种子填充) Shortest Path (最短路径) Recursive Search Techniques (回溯) Minimum Spanning Tree (最小生成树) Knapsack(背包) Computational Geometry(计算几何) Network Flow(网络流) Eulerian Path (欧拉回路) Two-Dimensional Convex Hull (二维凸包) BigNums (大数) Heuristic Search(启发式搜索) Approximate Search (近似搜索) Ad Hoc Problems(杂题),ACM 进阶之路,一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功. 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来。 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换,ACM 进阶之路(Conti.),第二阶段:练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。 5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分 6.博弈类算法。博弈树,二进制法等。 7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统. 10. 双向广度搜索、A*算法,最小耗散优先.,小题练巧、大题练脑,例题1. 三位数反转 输入一个三位数,分离出它的百位、十位和个位,反转后输出。 样例输入:127 样例输出:721,细节决定成败,例题1 三位数反转 输入一个三位数,分离出它的百位、十位和个位,反转后输出。 样例输入:127 样例输出:721,#include int main() int n; scanf(“%d“, ,输入是520,输出是025还是25?,m=(n%10)*100+(n/10%10)*10+(n/100); Printf(“%dn”, m);/ 25 Printf(“%03dn”, m);/ 025,小题练巧、大题练脑(Conti.),例题2. 阶乘之和 输入n,计算S=1!+2!+n!的未6位。 样例输入:10 样例输出:916800,细节决定成败,细节1:当n=10时,后6位是037913,但程序只输入37913 细节2:当n=100时,输出-961703 即:除法溢出!,#include int main() int i, j, n, S=0; scanf(“%d“, ,细节决定成败,#include int main() /解决除溢出问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论