ACM-ICPC知识体系_第1页
ACM-ICPC知识体系_第2页
ACM-ICPC知识体系_第3页
ACM-ICPC知识体系_第4页
ACM-ICPC知识体系_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、ACM-ICPC知识体系Email: 1ACM-ICPC主要的知识体系C语言库函数递归与回溯2ACM-ICPC主要的知识体系数据结构初级:链表/栈/队列/二叉树/堆高级:线段树/树状数组/SBT/后缀数组/前缀数组算法动态规划、贪心算法、图算法数学组合数学、计算数学、图论/数论/群论其他C/C+/Java语言基础等等3数据结构合理地存储数据,以满足数据的插入/删除/查询操作的全局最优所谓全局最优,就是要根据实际应用设计最合理的存储结构4示例:数组和链表回忆一下上次课的内容:数组的特点:内存中的连续区域常数时间访问和写入插入和删除比较耗时链表的特点在内存中分布不连续,依靠指针联系不能随机访问插入

2、和删除元素为常数时间5举例存储学生的成绩,用数组好还是链表好?存储加油站等待加油的汽车,哪个好?6示例实际情况中的数据结构更为复杂论坛中的文章、跟贴、用户之间复杂的关系,频繁的存储、删除和查询操作百度、Google海量的数据处理所以需要更为复杂的数据结构7算法算法的核心问题:效率时间效率空间效率时间和空间效率必须兼顾首先,我们来看一个具体问题8在一个排好序的数组中查找某个值 a20 = 0,1,2,3,7,8,9,10,21,22,23,24,29,35,36,37,38,45,47,49 查找该数组中是否存在:17,22,459方法一:直接查找int find (int t)int i;fo

3、r( i = 0; i 20; i+)if(ai = t) return 1;return 0; 1001237891021222324对于每一次查询,我们都需要依次访问它前面的所有数11方法改进:0123789102122232429根据有序性,每一次都判断中间的数跟要找的数哪个大。如果中间的数比要找的数大,则我们只要查找左半边,反之,则只要查右半边12方法二:二分查找int find (int t)int begin = 0, end = 19, mid;while(begin = end)mid = (begin + end) / 2;if(amid = t) return 1;else

4、 if(amid t) end = mid - 1;else begin = mid + 1;return 0; 13效率分析第一种方法:最坏要查询N次,平均要查询N/2次第二种方法最坏情况下大约Log2(N)次当N非常大的时候算法的力量!14算法算法的范畴非常大:动态规划贪心算法图论字符串匹配15数学数学是有趣的,也是枯燥的主要涉及的内容:组合数学:博弈问题,群论,四色问题,也包括图论内容计算数学:高数中的很多东西矩阵论概率统计计算几何16几个有趣的问题:Nim取子游戏:桌上放着100个棋子,A,B二人轮流从中拿走1个或2个,A先拿,每次不能多拿也不能不拿,最后谁拿到最后一个棋子就是胜利者假设两人都很聪明,请问:谁会赢?17Nim取子A会赢:A先拿走一个,剩下99个然后每次B若拿1个 ,B就拿2个,B若拿2个,A就拿1个,这样两人一个回合加起来总是拿3个可见A一定能拿到最后一个棋子18其他数学问题概率统计:赌博时最优决策计算几何:平面、空间的计算组合数学:非常非常多的稀奇古怪的问题19其他当然,作为一个出色的ACM-ICPC选手,除了数据结构、算法、数学这些大的知识外,还

温馨提示

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

评论

0/150

提交评论