noip2002总结by天津南开中学_第1页
noip2002总结by天津南开中学_第2页
noip2002总结by天津南开中学_第3页
noip2002总结by天津南开中学_第4页
noip2002总结by天津南开中学_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

NOIP2002总结By中学. ,此相邻两堆间的移动次数限定在一次或零次。由于本题规模很小,完全可以进行模,容易算出目标状态每堆的牌数a,而达到目标状态的过程就是把牌数多于a的堆中的牌移到a的堆。若把N堆牌分成左右两段各相邻的若干堆,则会出现三种情况:(3(3NP使他以及他左边所有堆的平均数大aN1,再递归(1P,P+1。最后输出总移动次数即可。【程序{$MProgramInName:String;输入文件名}Data:Array[1..100]OfLongInt;{每堆纸牌数ProcedureWork(A,B:LongInt);{AB堆的子问题}Small,i,P:LongInt;{Small为当前左边若干堆纸牌总数}IfA>=BThenFori:=AToBDoIfSmall>=(i-A+1)*AvThenIf(Small=(P-A+1)*Av)And(P<B)ThenElseIfP=BBegin{P堆的纸牌向左移}ElseBegin{情况(1)或(2)}Fori:=1ToN

Fori:=1ToNnc(Sum,Data[i]);Av:=SumDivN; 第二 字符变aaaaaaaaaaaaaaaaaaaaab题目中没有明确变换过程中字符串长度的上限(但我为了节约空间,仍认为为的状态,应使用指针【程序{$MProgramSType=Array[1..2800]OfRecordName:StrType;Step:Integer;ct:longintabsoluteot:Longint;{ctot为卡时所用变量,相关语句均为卡时所用}A,B:StrType;{A为初始状态,B为目标状态}Data:Array[1..6,1..2]OfStrType;{变换方案}D:Integer;{变换方案数}New(S);B:=Copy(Str1,Pos('',Str1)+1,255);WhileNotEof(InFile)Data[D,1]:=Copy(Str1,1,Pos('',Str1)-1);Data[D,2]:=Copy(Str1,Pos('Head:=1;Rear:=2;Head2:=1;Rear2:=2;ifct-ot>182then{10秒}{正向搜索IfS^[Head].Step>=10ThenFori:=1ToDWhilePos(Data[i,1],Copy(S^[Head].Name,P+1,255))<>0Forj:=1ToRear2-1IfS^[Rear].Name=S2^[j].NameThenIfS^[Head].Step+1+S2^[j].Step<=10Then{判重Forj:=1ToRear-1IfS^[Rear].Name=S^[j].NameThenIfNotIsSameIfS2^[Head2].Step>=10ThenFori:=1ToDDoWhilePos(Data[i,2],Copy(S2^[Head2].Name,P+1,255))<>0DoForj:=1ToRear-1IfS2^[Rear2].Name=S^[j].NameIfS2^[Head2].Step+1+S^[j].Step<=10ThenForj:=1ToRear2-1IfS2^[Rear2].Name=S2^[j].NameThenIfNotIsSameThenUntil(Head>=Rear)Or 第三 落【程序{$MProgramIfH<KThenElset1:=Sqrt(2*(H-K)/10);

x2:=S1-V*t1+L小球落至小车上表面高度时小车右端的坐标}Ifx1<0Thenx1:=0;Ifx2>N-1Thenx2:=N-Ifx1-Trunc(x1)<=0.00001ThenLeft:=Trunc(x1)ElseIfTrunc(x2)+1-x2<=0.00001ThenRight:=Trunc(x2)+1ElseRight:=Trunc(x2);IfRight<LeftThenWri n(0)ElseWri 第四 矩形覆由于k的取值只有四种情况,所以我采用对k分类的办法k=1k=4时,简单地用直线划分不一定能求得最优解(如右图,其最优解是零。算法是枚【程序{$MProgramSetType=Array[1..50,1..2]Of{CurSetAB个点IfB-A+1<=1Fori:=AToBDoIfCurSet[i,1]<LeftThenIfCurSet[i,1]>RightThenRight:=CurSet[i,1];IfCurSet[i,2]<DownThenDown:=CurSet[i,2];IfCurSet[i,2]>UpThenUp:=CurSet[i,2];Function{CurSetAB个点IfB-A+1<=2Fori:=AToB-1Do{以横坐标排序(冒泡排序)}Forj:=i+1ToBDoIfCurSet[i,1]>CurSet[j,1]ThenFori:=AToB-1DoIfCurSet[i,1]=CurSet[i+1,1]Then{i个点与第(i+1)个点横坐标相同,不能在它们之间划分}IfBest>qThenFori:=AToB-1Do{按纵坐标排序}Forj:=i+1ToBDoIfCurSet[i,2]>CurSet[j,2]ThenX:=CurSet[i,1];Fori:=AToB-1DoIfCurSet[i,2]=CurSet[i+1,2]ThenContinue;IfBest>qThenBest:=q;Function{CurSetABIfB-A+1<=3Fori:=AToB-1DoForj:=i+1ToBIfCurSet[i,1]>CurSet[j,1]ThenFori:=AToB-1DoIfCurSet[i,1]=CurSet[i+1,1]ThenIfBest>qThenBest:=q;IfBest>qThenBest:=q;Fori:=AToB-1DoForj:=i+1ToBIfCurSet[i,2]>CurSet[j,2]Fori:=AToB-1DoIfCurSet[i,2]=CurSet[i+1,2]ThenContinue;IfBest>qThenBest:=q;IfBest>qThenBest:=q;Function{CurSetAB个点IfB-A+1<=4Fori:=AToBDo{枚举每个点}{i个点及其左下方(包括正左方和正下方)Set1

温馨提示

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

评论

0/150

提交评论