ACM常用算法.ppt
《ACM常用算法.ppt》由会员分享,可在线阅读,更多相关《ACM常用算法.ppt(106页珍藏版)》请在咨信网上搜索。
1、 常用算法常用算法&数据结构数据结构 浙江大学微软技术俱乐部浙江大学微软技术俱乐部 彭鹏彭鹏ACM竞赛竞赛12、竞赛中常见的16种题型 1、ACM/ICPC简介4、竞赛中基本的数据结构与算法 5、ZOJ入门3、时空复杂度的分析2ACMAssociation for Computing Machinery美国计算机学会美国计算机学会ICPCInternational Collegiate Programming Contest国际大学生程序设计竞赛国际大学生程序设计竞赛ACM/ICPC简介3ACMACMACM(A Association for C Computing M Machinery)成
2、立于计算机诞生次年,是目前计算机学界中历史最成立于计算机诞生次年,是目前计算机学界中历史最悠久、最具权威性的组织,是推进信息技术专业人员悠久、最具权威性的组织,是推进信息技术专业人员和学生提高技巧的主要力量。和学生提高技巧的主要力量。ACMACMACMACM通过提供前沿技术通过提供前沿技术信息和从理论到实践的转化,为其全球信息和从理论到实践的转化,为其全球7.57.5万名成员万名成员服务,并已经成为信息科技领域的一个基本信息来源。服务,并已经成为信息科技领域的一个基本信息来源。4ICPC ACMACM主办的国际大学生程序设计竞赛主办的国际大学生程序设计竞赛(I International C
3、Collegiate P Programming C Contest),简称简称ACM/ACM/ICPCICPC,自从自从1977年开始至今已经连续举办年开始至今已经连续举办2828届。其宗旨届。其宗旨是提供一个让大学生向是提供一个让大学生向IT界展示自己分析问题和解决问题界展示自己分析问题和解决问题的能力的绝好机会,并成为一个有效的途径,让下一代的能力的绝好机会,并成为一个有效的途径,让下一代IT天才可以接触到其日后工作中将要用到的各种软件。天才可以接触到其日后工作中将要用到的各种软件。自自1998年年IBM成为该项竞赛的赞助商以来,大赛规模不断成为该项竞赛的赞助商以来,大赛规模不断扩大。去
4、年有扩大。去年有7171个国家个国家15821582所大学派出所大学派出41094109支队伍参支队伍参加了加了3030个赛点的分区赛,其中个赛点的分区赛,其中78支队伍参加今年支队伍参加今年4月在月在上上海海香格里拉酒店香格里拉酒店举办的世界总决赛。举办的世界总决赛。现在,现在,ACM/ICPC已成为世界各国大学生中最具影响力已成为世界各国大学生中最具影响力的国际计算机赛事。的国际计算机赛事。5ICPC竞赛规则三人组队在46小时编写C/C+或Java程序解决610道题完成题目数多的队伍优胜完成题目数一样的队伍,罚时少的优胜6ICPC logA problemA thoughtA soluti
5、onA balloon 7中国各高校ACM开展情况清华大学 上海交通大学中山大学 复旦大学北京大学 南京大学浙江大学8浙江大学ACM集训队选拔标准根据校内程序设计竞赛的结果,现拟定集训队具体选拔标准如下:1.曾参加过去年暑假集训的队员自愿入围;未参加过集训,但满足下列条件者自愿入围:2.对ACM ICPC活动有极大热情,视练习题如游戏;并且3.校内程序设计竞赛前5名;或者4.校内程序设计竞赛第6-9名,并且7月1日前在ZOJ通过至少100 题;或者5.校内程序设计竞赛第10-15名,并且7月1日前在ZOJ通过至少 150题;或者6.7月1日前在ZOJ通过至少200题。9如何建立一支强队个人的能
6、力理论(几何,数论,动态规划,图论等)技术(编程)队员能力上的互补某论坛,一无聊男某论坛,一无聊男yy的中国的中国“梦之队梦之队”钱文杰(?)钱文杰(?)反应奇快,擅长随机化,贪心,反应奇快,擅长随机化,贪心,NOI贪心王贪心王刘汝佳刘汝佳or吴嘉之吴嘉之 见多识广,做过的题必别人见过的题多见多识广,做过的题必别人见过的题多赵爽赵爽 上海交大的上海交大的“割题手割题手”10Leader/Coordinato(协调比赛进程)Reader(发现题目隐讳的涵义)Thinker(逻辑能力强,收集其他队员意见)Programmer/Debugger(反应快/稳,细心)Helper(协助比赛,查错,验证数
7、据等)一支强队需要的角色11参考书籍主要参考书籍C+Primer C+标准程序库算法导论算法艺术与信息学竞赛组合数学计算几何?历届国家集训队论文 12网络资源http:/http:/acm.timus.ruhttp:/acm.sgu.ruhttp:/ Programming(动动态规划态规划)Greedy(贪心贪心)Complete Search(穷举穷举)Flood Fill(种子填充种子填充)16常见题型常见题型Shortest Path(最短路径最短路径)Recursive Search Techniques(回溯)回溯)Minimum Spanning Tree(最小最小生成树)生成树
8、)Knapsack(背包)背包)17常见题型常见题型Computational Geometry(计算几何计算几何)Network Flow(网络流网络流)Eulerian Path(欧拉回路欧拉回路)Two-Dimensional Convex Hull(二维凸包二维凸包)18常见题型常见题型BigNums(大数大数)Heuristic Search(启发式启发式搜索搜索)Approximate Search(近近似搜索似搜索)Ad Hoc Problems(杂题杂题)1920枚举法又叫穷举法,它利用了计算机计算速度快且准确的特点,是最为朴素和有效的一种算法。不是办法的办法但有时却是最好的办
9、法21Pizza Anyone?(ZOJ 1219)题目大意:你需要为你和你的朋友们订一个皮萨。每个朋友都会告诉你他们想和不想放进皮萨里的东西。你是否能订一个皮萨,让他满足每个人至少一个条件。假设一共有16种东西可以放进皮萨。22 是个对计算机很小的数23贪心法贪心法(Greedy)矩阵胚理论(详情请参考算法导论)枚举法的时间效率很低,贪心法恰恰与其相反。并且贪心法的程序也很好实现。无数论文都指责贪心法往往得不到问题的最优解。绝世高手与普通高手的差距所在。24栈和队列栈和队列栈:后进先出(LIFO)队列:先进先出(FIFO)25字符串的输入与输出 或 char s100;scanf(%s,s)
10、;string a(s);String a;cin a;C+常用头文件字符串的读入哪种读入更快?在输入数据达到1M时,cin,cout将比scanf,printf在速度上有明显的劣势26排序排序排序的种类:交换排序,选择排序,插入排序,堆排序希尔排序,快速排序,归并排序,桶排序27用C+实现排序#include数组 asort(a,a+5);vector asort(a.begin(),a.end();28并查集并查集并查集是一种树型的数据结构,用于处理一些不相交集合的合并问题。并查集的主要操作有1合并两个不相交集合2判断两个元素是否属于同一个集合3路径压缩29Parity(ceoi99)有一
11、个01序列,长度=1000000000,现在有n条信息,每条信息的形式是a b even/odd。表示第a位到第b位元素之间的元素总和是偶数/奇数。你的任务是对于这些给定的信息,输出第一个不正确的信息所在位置-1。信息的数目不超过5000。如果信息全部正确,即可以找到一个满足要求的01序列,那么输出n。30Parity(ceoi99)从整个01序列肯定是无法入手的,因为它的长度高达109。从范围比较小的n入手。也就是说我们需要对信息进行一些特殊的处理。a b even/odd,那么将元素b指向a-1,边的权值是even/odd。下面我们由样例来说明一下这个处理方法。31Parity(ceoi9
12、9)(肖天)建立sum数组,sumi表示从1到i之和是奇(true)还是偶(false),sum0=false。这样题目中给的任意问题(a,b)的答案都可以用sumb xor suma-1表示。开始我们并不知道sum1.n的值,不妨设为false,这时任意suma,sumb都是独立的。对于每对问答(a,b,c),都可以知道sumb xor suma-1=c,由此把sumb和suma-1联系起来。这步操作可以用并查集完成,对于问答(a,b,c)如果suma-1,sumb不属于一个集合就把它们并起来,否则如果suma-1 xor sumb不等于c则说明出现矛盾,输出总句数,退出。对于不出现矛盾的s
13、um数组,对于每个集合分为两个部分,我们指定其中一个部分为true,另一个部分为false,则可以确定sum数组,利用sumi xor sumi-1可以求出第i位的数字,由于不同集合之间没有问答出现,所以此数列是一可行解,证明算法正确。32堆堆(优先队列优先队列)优点:优点:实现简单动态维护一组数据中最小(大)的一个数组维护 33例题:积水一个长方形网格包含了n*m块地,每块地上面有1个长方体。每一个长方形盖住了一块地,地的面积是1平方英寸。相邻的地上的长方体之间没有空隙。一场大雨降临了这个建筑物,在建筑物的某些区域有积水产生。给各方格高度,求积水总量34分析定义每块地上的长方体的高度称为原始
14、高度积满水时的水面高度称为积水高度(高于积水高度的水一定会流走,低于积水高度的水一定流不走)积水高度与原始高度之差为积水深度如果一个长方体上不可能有积水,那么它的积水高度就等于它的原始高度。最外圈不能积水,积水高度等于原始高度35分析由外而内计算。每次选取外围的格子中积水高度最低的一个格子x,考虑它周围所有在网格内部的格子y想象不断的往x和y里注水,但是x的积水高度固定(想象该高度处有一个小孔),因此如果y的原始高度不小于x的积水高度,那么它的积水高度就是它的原始高度如果y的原始高度小于x的积水高度,那么它的积水高度就等于x的积水高度每次用堆取出x进行计算,O(mnlogmn)。36哈希表哈希
15、表(Hash)理论上查找速度最快的数据结构之一缺点:需要大量的内存需要构造Key 37Hash表的实现表的实现数组冲突解决法开散列法闭散列法C+sgi stl 实现38Hash Key的选取的选取数值:方法一:直接取余数(一般选取质数M最为除数)方法二:平方取中法,即计算关键值的平方,再取中间r位形成一个大小为 的表是多少?39字符串:int ELFhash(char*key)unsigned int h=0;while(*key)h=(h 24;h&=-g;return h%M;方法二:ELFhash函数方法一:折叠法:即把所有字符的ASCII码加起来40二分搜索树二分搜索树普通的二分搜索树
16、时间复杂度:缺点:容易出现不平衡的情况容易出现不平衡的情况AVL Tree,Splay tree,红黑树 41树堆树堆(Treap)Treap=Tree+heap每次插入/删除结点的时候,给结点随机分配一个优先级,让Treap关于优先级形成一个堆的同时,关于关键码形成BST跳跃表、B树42跳跃表(跳跃表(Skiplists)43线段树线段树 在一类问题中,我们需要经常处理可以映射在一个坐标轴上的一些固定线段,例如说映射在OX轴上的线段。由于线段是可以互相覆盖的,有时需要动态地取线段的并,例如取得并区间的总长度,或者并区间的个数等等。一个线段是对应于一个区间的,因此线段树也可以叫做区间树。444
17、5 Atlantis(ZOJ 1128)一个平面被很多矩形覆盖,矩形之间会相互叠加。输出矩形覆盖的总面积。46Atlantis(ZOJ 1128)线段树矩形切割47矩形切割矩形切割48字典树字典树(Trie)当关键字是串的时候,理论上查找最快的数据结构定义:定义:保存字符串用的树型数据结构(多叉树),其中每个节点表示一个公共前缀,单词信息保存在相应的页节点里面。49给如下几个单词,构造的单词树:An,Ant,All,AllotAlloy,Aloe,Are,Atebe版权归浙江大学ACM领队徐串所有转载需保留此字样50T9(ZOJ 1038)题目描述:手机有智能英文输入法,他根据自己已有的词汇表
18、,即使你每个数字只按一次也可以猜出你要按的是哪个单词(方法就是从所有可能的串中选出出现概率最高的一个)。词汇表:hell 3hello 4idea 8next 8super 3按435561是的响应显示iidhelhellhello51动态规划动态规划动态规划的时间效率极高。动态规划的算法简洁,一般只用边界和状态转移方程就可清晰地表示出进行规划的步骤;而因为有了这些用数学语言描述的天然材料,编程也较为方便。最重要的一点:动态规划不单是一种思想,也不单是一类算法,它是思想方法和具体算法的混合物。摘自徐静动态规划的算法与实现52动态规划动态规划无后效性递推法和记忆化搜索53深度优先搜索深度优先搜索
19、(DFS)按照深度优先的顺序遍历状态空间,通常用递归或者栈来实现。void dfs(state,depth)if(state=结束状态结束状态)退出;)退出;枚举所有可行状态枚举所有可行状态更新全局变量;更新全局变量;dfs(newstate,depth+1);还原全局变量还原全局变量54宽度优先搜索宽度优先搜索(BFS)如果代价和搜索树深度成正比,那么可以通过广度优先搜索得到解。由于空间占用大,BFS用处不是很广,一般只用在路径寻找问题中,但是一旦使用,将比深度优先搜括看得多双向宽度优先搜索深度优先和宽度优先搜索比较55Prime Ring Problem(ZOJ 1457)A ring i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ACM 常用 算法
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。