浅析倍增思想在信息学竞赛中应用_第1页
浅析倍增思想在信息学竞赛中应用_第2页
浅析倍增思想在信息学竞赛中应用_第3页
浅析倍增思想在信息学竞赛中应用_第4页
浅析倍增思想在信息学竞赛中应用_第5页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

摘关键正摘关键正引倍增思想应用之一在变化规则相同的情况下加速状态转移12页29a0=a,a1=a2,a2=a4,a3=a8,a4=a16,可以看出现在考虑另外一种方法,令ai=ai-12,(1<=i<=4)于是a0,a1,a2,a3,a44a0=a,a1=a2,a2=a4,a3=a8,a4=a16,可以看出现在考虑另外一种方法,令ai=ai-12,(1<=i<=4)于是a0,a1,a2,a3,a44也就是说,再进行一次乘法就可以得到a17.这样,总共进行5ana 1n表示成为二进制形式并提取出其中的非零位,0 记录下来,就可以得到(bw+1)a2a2a22根;据3幂运算的法则,可以推出 b an=a22 b= **……* ann的二进制表示最多有个非零位最大为naO(n)次乘法效率012,a2, 算即用就可以了。伪代码如下(见下页 b an=a22 b= **……* 2 超过log2n1个a的幂的积。而序列 , , ia2i i利用已知结果a2进行一次乘法操作(a2*a2=a2 3页29longdoublepower(longdoublea,longlongdoublepower(longdoublea,long{{if(n%2)}return}而在实际情况中,a可能是一个实数,也可能是一个矩阵或是一个抽象的状2、骰子的运动给定一个六个面的骰子,每个面上都有一定的权值(150之间的整数。CEPC2003ProblemDDice24页29所需的最小花费。(109。--0123123424种状态,然后按列进行动态规划(本质96个状态,再推到第三列,第四列……,一直推到终点所在的列,Dijkstra算法算出从一列中某个状态转移到相邻的一列中某个所需的最小花费。(109。--0123123424种状态,然后按列进行动态规划(本质96个状态,再推到第三列,第四列……,一直推到终点所在的列,Dijkstra算法算出从一列中某个状态转移到相邻的一列中某个状态109,所以这个算法无论从时间还是空间上都难以满足要求。那么,是否设骰子从第列某个状态A运动到第列某个状态需要花费代价则骰子从第2列的状态A(与前一个A的行号以及朝向均相同)运动到第iA运动到第(i+k)2BcjA运动到第(j+k)列某个状态B也需要花费代价c,这就是相同的变化规则。1.2A->B->C的顺序计算转移费用再加起2这里k5页29列,用Dijkstra算法就可以得到答案)1、用Dijkstra列,用Dijkstra算法就可以得到答案)1、用Dijkstra算法得到一列中某个状态A转移到右边相邻一列中某个状态B所需最小花费。这可以推出一个96*96的矩阵,不妨称a1;2、根据已经得到的变化规则a1可以计算出一列中某个状态A转移到右边与其距离为2的一列中某个状态B所需花费——a2。点所在的那一列)开始,不断对其施行变化规则、b 面权值的取值范围可以算出必须考虑的点数为常数,每次倍增的时间为963,而倍增的次数为log2n,所以上述算法的时间复杂度为O(963log2N)。示一种变化的手段。也就是说,倍增思想计算出的量与具体的状态是无关:6页29A B C{{{}return},(除非转化成乘法:a1/a2/a3/a4……/an≠a1/(a2/a3/a4……/an)。这也提醒我们,当然,这个应用还有一些其他的实现方法。比如在计算时,不一定要计算aa(n-1)/2*a(n-n为奇数27页29倍增思想应用加速区间操对于区间中每一个点A,记录[A,A+20-1],[A,A+21-1],[A,A+22-1[A,A+2l倍增思想应用加速区间操对于区间中每一个点A,记录[A,A+20-1],[A,A+21-1],[A,A+22-1[A,A+2log2N-1]3,这logN+1)个区间的性质。在记录的过程中,按照区将会有所介绍。设要求[A,A+22i-1]的性质,则可以通过已知结果[A,A+2i-1]与[A+2i,(A+2i)+2i-1]得到有关性质。在取用区间[A,B]时,有两种适用范围不同的方法响klog2(BA1)根据区间[A,A+2k-1]与[B-2k+1,B]就可以1.3AB2log2(B2log2(B响),[A,B划分成为-1],,A+2log2(BA1)+2log2(B()1)2log(B-1],……[x,B](x为某个数如图所以最多分成了log2BA1)+138页29ABO(1)或O(log2N)ABO(1)或O(log2N)(视处理方法而定。空间复杂度为O(Nlog2N)例 一般RMQ问题可以在O(Nlog2N)的时间内得到这个数组。然后对于每对i,j,可以利用一般模式中第一种取用区间的方法,令k=log2ji1),则比较A[B[i,k]]A[B[j-2k+1,k]]的大小就可以得到结果了。时间复杂度为O(1).例 求树上最近公共祖先问题次数为m.45USACO2004FebruaryContestGreenProblem3Distance9页29范围缩小到[B,B的父亲,……,X],否则缩小到[X的父亲,……,根]。将上界变为X,否则将下界变为XYXBA上文提到了如何在区间重叠对所需结果有影响的情况下取用区间[A,B],这里只不过是把B换成了A的与X同层的祖先。所以可以在O(log2N)的时间内找到步骤2中可以加上这样一个优化,即如果本次找到的祖先并非X,则根据步骤1XX2A开X的父亲开始找。但是这个优化并不能降低最坏情况下的6如果XA还要大,认为AXX10页2922222参考文献[1]中给出了一种转化为±1RMQ求解的方法,可以使得预处理的时22222参考文献[1]中给出了一种转化为±1RMQ求解的方法,可以使得预处理的时一个有趣绍的倍增思想为2增思想。增思想,最多通过log k=3,N=30,则所需要的值(即3的幂)327(30=3+27)。需要3次扩1,3,9,273-1=239,需3+3=6,6+3=9(9,但是如(k1)log2(k1)logklog2log2 k令f(k)=(k-1)-==.当k=2log2log2log2当k>=3时,f’(k)=1-1loge=1-lne=1- >=1-1 2kkln kln3ln7详见参考文献11页29y2(1,0)(2,1).总(k1)logklog2ky2(1,0)(2,1).总(k1)logklog2k1log2=>1y876543210k123456789 总纸上得来终觉浅,绝知此事要躬行12页29y1=k-感参考文IOI2004CEPC2003ProblemDDiceUSACO2004FebruaryContestGreen附感参考文IOI2004CEPC2003ProblemDDiceUSACO2004FebruaryContestGreen附Farewell,My6放在桌面上,2,3,4,5都向上折,1折到顶部(这需要一些空六个面上的分值是给定的,分别是f(1)到f(6)。13页29312654表所处方格的列编号,y代表所处方格的行编号,x是整数,y1,2,3,4中的某90度,如果滚动的轴是底面的左边那么它就移动到你的朋友,它是一个骰子,目前正处于(x1,y1)6号面贴着带子,1号面处于顶部,2号面对着前面。它想做一次远行,移动到(x2,y2)上,这是一个冒输入第一行是六个数,依次给出f(1)到f(6),均在1到50范围内。第二行四x1,y1,x2,y2,给出了出发地(x1,y1)和目的地(x2,y2)。x1,x2109。输出一行,单独的一M,代表从(x1,y1)移动到(x2,y2)的最小花费12831-110723RMQ(经典问题A[1…NMUSACO2004FebruaryContestGreenProblem3DistanceQueriesDistanceQueries[BrianDean,2004]FarmerJohn'spastoralneighborhoodhasNfarms(2<=N<=40,000),usuallynumbered/labeled1..N.AseriesofM(1<=M<40,000)verticalandhorizontalroadseachconnectthefarms.Amaptheillustrationbelowofvaryinglengths(1<=length<=1000)ofthesefarmsmightlooksomethinglikewhichfarmsarelabeledF1..F7forclarityandlengthsbetweenconnectedfarmsareshownas14页29---------F1--||||---------Beingandiagram,itisnotpreciselytoscale,of---------F1--||||---------Beingandiagram,itisnotpreciselytoscale,ofleadexactlynorth,south,east,and/orwest.Moreover,farmsareonlylocatedattheendpointsofroads,andsomefarmcanbefoundateveryendpointofeveryroad.Notworoadscross,andpreciselyonepath(sequenceofroads)linkseverypairoffarms.FJlosthispapercopyofthefarmmapandhewantstoreconstructitfrombackupinformationonhiscomputer.Thisdatacontainslineslikethefollowing,oneforeveryroad:isaroadoflength10runningnorthfromFarm#23toFarmisoflength7runningeastfromFarm#1toFarmFarmerJohn'spathmuchtoowantstorefusedtoruninhismarathonfortheirleisurelysincehechoseaHethereforeTheinputtoapathofamorereasonablethisproblemconsistsofthedescriptionofthefarmandisfollowedbyalinecontainingasingleintegerK,followedbyK"distanceinputEachdistancetwointegers,interestedqueryisalineofgivingthenumberscomputingoftwofarms(measuredintwofarms).betweenwhichthelengthofPleaseroadsalongthepathbetweendistancequeriesasquicklyasPROBLEMNAME:15页29INPUT**Line1:Twospace-separatedintegers:NandLines2..M+1:Eachlinecontainsfourspace-separatedentities,F1,F2,L,andDthatdescribearoad.F1andF2arenumbersoftwofarmsconnectedbyaroad,LINPUT**Line1:Twospace-separatedintegers:NandLines2..M+1:Eachlinecontainsfourspace-separatedentities,F1,F2,L,andDthatdescribearoad.F1andF2arenumbersoftwofarmsconnectedbyaroad,Lisitslength,andDcharacterthatiseither'N','E','S',or'W'oftheroadfromF1to1<=K<=**Line2+M:Asingleinteger,Lines3+M..2+M+K:EachcorrespondsacontainstheindicesoftwoSAMPLEINPUT(file71634243112663514713973202646INPUTThisisthefarmlayoutdrawnabove.OUTPUTFORMAT:*Lines1..K:Foreachdistancequery,outputonintegergivingtheappropriateSAMPLEOUTPUT(filedquery.out):3OUTPUTFarms2and6are20+3+13=36#include<stdio.h>#include<stdlib.h>#defineinfile"fmf.in"#defineoutfile16页29shapenummiddistlenmaxnumshapenummiddistlenmaxnumlonglongdy[7][7][7],f[7],done[distlen+1][5][shapenum+1],17页29FILEvoidchange(longlongsign,long*nx,longFILEvoidchange(longlongsign,long*nx,longlong*ny,longlong{longlonga[4],b[4],i;for(i=1;i<=3;i++)for(i=1;i<=3;{if(gb[sign][i]<0)else}void//calculatetheinitial{ofchanges---longlonga,b,i,j,k,x,y,z,nx,ny,nz,xynum,min,qq,zeng;for(a=1;a<=4;a++)for(b=1;b<=24;b++){for(i=1;i<=distlen;i++)for(j=1;j<=4;j++)for(k=1;k<=shapenum;{}while{for(i=1;i<=distlen;i++)for(j=1;j<=4;j++)for(k=1;k<=shapenum;if18页29{}{}if(min==df)for(i=1;i<=4;{if(done[nx][ny][nz]==0){if}}}if{for(i=1;i<=4;for(j=1;j<=shapenum;j++)}if{for(i=1;i<=4;for(j=1;j<=shapenum;j++)}if{if{for(i=1;i<=shapenum;i++)if(dist[mid][y2][i]<min)19页29}}}}void{long}}}}void{longlongfor(i=1;i<=6;i++)for(i=1;i<=shapenum;i++)}voidzhuan1()//toupdatenow---the{longlongi,j,k,h,temp[5][shapenum+1];for(i=1;i<=4;i++)for(j=1;j<=shapenum;j++)for(i=1;i<=4;for(j=1;j<=shapenum;j++)if(now[i][j]!=df)for(k=1;k<=4;for(h=1;h<=shapenum;iffor(i=1;i<=4;i++)for(j=1;j<=shapenum;j++)}voidzhuan2()//toupdatezhy---theregulation{longlongi,j,k,h,a,b,qq,temp[5][shapenum+1][5][shapenum+1];for(i=1;i<=4;i++)for(j=1;j<=shapenum;for(k=1;k<=4;20页29for(h=1;h<=shapenum;h++)for(h=1;h<=shapenum;h++)for(i=1;i<=4;for(j=1;j<=shapenum;j++)for(k=1;k<=4;k++)for(h=1;h<=shapenum;h++)if(zhy[i][j][k][h]!=df)for(a=1;a<=4;a++)for(b=1;b<=shapenum;iffor(i=1;i<=4;i++)for(j=1;j<=shapenum;j++)for(k=1;k<=4;k++)for(h=1;h<=shapenum;h++)}void{longlongx,i,j,temp;for(i=1;i<=4;i++)for(j=1;j<=shapenum;while(x>0){}}void{longlongi,result;for(i=1;i<=shapenum;if21页29}int{return}int{return}#include#includeinfile"rmq.in"maxn50000maxlognlongFILEvoid{longi;for(i=1;i<=n;i++)while{}}longmin(longsa,long22页29{if(a[sa]<a[sb])return(sa);elsereturn(sb);}void{if(a[sa]<a[sb])return(sa);elsereturn(sb);}void{longfor(i=1;i<=n;i++)for(j=1;j<=logn;j++)for(i=1;i<=n;i++)if(i+mi[j-1]>n)}void{longi,k,result;for

温馨提示

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

评论

0/150

提交评论