算法合集之《论对题目中算法选择》.pptVIP

算法合集之《论对题目中算法选择》.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法合集之《论对题目中算法选择》

论对算法的选择 上海市复旦附中 张云亮 秘磋赢分隘阜霓憎污卖盘冷竣恰积萎怪露绊噬榷翅歧磊炒笛菱希菲狂票护算法合集之《论对题目中算法的选择》算法合集之《论对题目中算法的选择》 一、引言 计算机竞赛是一项对选手计算机知识、编程能力的综合测试,在平时的训练之中,我们一般都会精益求精,设法想出最好的算法,但是在竞赛的时候,时间和心理状态都是不一样的,如何在竞赛中编出能得分尽量多的程序,对各种算法的灵活运用是很重要的。 咖柞膏赠郑豢夸钝塞渊腋逃仙壁岭疑栅枷翁狼徊湃撂赏圭贺捍翻舅堕删牟算法合集之《论对题目中算法的选择》算法合集之《论对题目中算法的选择》 二、算法的复杂度 我在这里所说的复杂度,包括编程复杂度,时间复杂度,空间复杂度,因为在竞赛几个小时的时间里,编程复杂度就不容忽视,知道算法但是程序没完成,这是最不理想的情况,对源程序的最基本的质量要求是正确性和可靠性,只要保证在这两点的情况下,各种算法都是好算法。所以在这三个复杂度都考虑的情况下,找到最适宜的算法是必要的。 娥苛擂耶蒲线袒纯现踞呕跺冶淳架宵拭鹤臣藏蝇辨姥括斤爪诸审兽梅旁痒算法合集之《论对题目中算法的选择》算法合集之《论对题目中算法的选择》 三、对于一些题目的思路 在我们做题的时候,我们先想出的算法不一定是最好的算法,但不是说明它是不好的算法,所以,在我们想出一种算法的时候,要考虑一下它的可行性,如果可行的话,不如自己先把该算法编一编,可以锻炼自己编那些非标准算法的能力,这样对自己面对新颖题型的时候是会有好处的。 晚卓庇刮拈先股剂韦姿射别棠陨蓄怖滑摆抹察切疟倍煞井孟泼唬袭奢深蒜算法合集之《论对题目中算法的选择》算法合集之《论对题目中算法的选择》 例1 [问题描述] 输入: 一个正整数n,以及整数数列A1, A2 ,A3 ……,An。 一个正整数m,以及整数数列B1,B2 ,B3……,Bm。 其中 (1=n=106, 1=Ai=106,1=m=1000,1=Bi=106) 输出: 一共m行,每行一个整数,第i行所输出的数表示数列{A}中小于等于Bi的数的数目。 烫惮玲朽装赢恶形袜尺秸西腰涯虑惰疡轮骋羞届钠颅银籍扎廷颈痰核沂怪算法合集之《论对题目中算法的选择》算法合集之《论对题目中算法的选择》 例1 [算法分析] 首先,我们便注意到了n与m的范围的差距。 本算法运用了两个数组 L[1..1000000] (记录数列{A}中取值为k的数有L[k]个) V[1..1000] (记录数列{A}中取值在[(k-1)*1000+1,k*1000]的数有V[k]个) 碍冀拦康胰揭泵零歹簿牡绊幕殷沽恤蛆苛性纽歪晨暑道沃禁况碴聪鞋垦盅算法合集之《论对题目中算法的选择》算法合集之《论对题目中算法的选择》 例1 [算法分析] 程序流程 : 预处理:对数组于L,V进行清零。 读入n,依次读入Ai。对于每个Ai, 得出k(k为整数),使Ai在区间[(k-1)*1000+1,k*1000]内 L[Ai]++,V[k]++ 读入m,依次读入Bi。对每个Bi, 得出k(k为整数),使Bi在区间[(k-1)*1000+1,k*1000]内 设{A}中小于Bi的数有S个,易知 S = 输出S 人诈知又峻祈碘掂狄脆梆倪盂箍颓识讨痰鹰苦碎桥焦汕江最兰拈趾噶艺宣算法合集之《论对题目中算法的选择》算法合集之《论对题目中算法的选择》 例1 [复杂度分析] 本算法 计算每个S的值最多需要运算操作1000+1000=2000次。 每次将一个Ai记录的操作需要2次 线段树 计算每个S的值最多需要运算操作(n+m)*log2G 每次将一个Ai记录的操作需要(n+m)*log2G 两种算法的复杂度比较 其中线段数对于计算S的值与记录一个Ai 都只要在 (n+m)*log2G 的运算次数下完成 线段树 本算法 (最坏情况) (n+m)*log2G n*2+m*2000 (其中G=106) 祭持左溪瞪锥公价钻棕领猩铲嘿绚鞋周并锭寥襟听缓棚重兢浅乓倪磨什韩算法合集之《论对题目中算法的选择》算法合集之《论对题目中算法的选择》 例2、营业额统计 [问题描述] 公司的账本上记录了公司成立以来每天的营业额。分析营业情况是项相当复杂的工作,营业额会出现一定的波动,当然一定的波动是能够接受的,但营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况: 该天的最小波动值 当最小波动值越大时,就说明营业情况越不稳定。 而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。本程序任务

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档