ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:28.41KB ,
资源ID:17190599      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17190599.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(noip提高组 复赛试题及参考程序pascal.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

noip提高组 复赛试题及参考程序pascal.docx

1、noip提高组 复赛试题及参考程序pascal第七届(2001)分区联赛复赛解题报告(提高组)第一题:一元三次方程求解(p1.pas p1.in p1.out)问题描述有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。提示:记方程f(x)=0,若存在2个数x1和x2,且x1x2,f(x1)*f(x2)0,则在(x1,x2)之间一定有一个 根。样例输入:1 -5

2、 -4 20输出:-2.00 2.00 5.00第二题:数的划分(p2.pas/c/cpp p2.in p2.out)问题描述将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,5,1; 5,1,1;问有多少种不同的分法。输入:n,k (6n=200,2=k=6)输出:一个整数,即不同的分法。样例输入: 7 3输出:4 四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;第三题:统计单词个数(p3.pas/c/cpp p3.in p3.out)问题描述给出一个长度不超过200的由小写英文字母组成的字母串(

3、约定;该字串以每行20个字母的方式输入,且保证每行一定为20个)。要求将此字母串分成k份(1k=40),且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串this中可包含this和is,选用this之后就不能包含th)。单词在给出的一个不超过6个单词的字典中。要求输出最大的个数。输入格式:输入数据放在文本文件p3.in中,其格式如下:第一行为一个正整数(0n=5)表示有n组测试数据每组的第一行有二个正整数(p,k),p表示字串的行数;k表示分为k个部分。接下来的p行,每行均有20个字符。再接下来有一个正整数s,表示字典中单词

4、个数。(1=s=6)接下来的s行,每行均有一个单词。输出格式:结果输出至屏幕,每行一个整数,分别对应每组测试数据的相应结果。样例输入: 11 3thisisabookyouareaoh4isaoksab输出: /说明:(不必输出)7 / this/isabookyoua/reaoh第四题:CAR的旅行路线(p4.pas/c/cpp p4.in p4.out)问题描述又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间

5、均有航线,所有航线单位里程的价格均为t。那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你请教。任务:找出一条从城市A到B的旅游路线,出发和到达城市中的机场可以任意选取,要求总的花费最少。输入文件:输入文件名p4.in输 出:p4.out(输出最小费用,小数点后保留1位。)输入格式:第一行为一个正整数n(0=n=10),表示有n组测试数据。每组的第一行有四个正整数s,t,A,B。S(0S=100)表示城市的个数,t表示飞机单位里程的价格,A,B分别为城市A,B的序号,(1=A,B=S)。接下来有S行,其中第I行均有7个正整数xi1,yi1,xi

6、2,yi2,xi3,yi3,Ti,这当中的(xi1,yi1),(xi2,yi2),(xi3,yi3)分别是第I个城市中任意三个机场的坐标,T I为第I个城市高速铁路单位里程的价格。输出格式:共有n行,每行一个数据对应测试数据。 样例输入11 10 1 31 1 1 3 3 1 302 5 7 4 5 2 18 6 8 8 11 6 3输出:47.55参考程序:第一题:var y,n,a,b,c,d:real; i:longint;begin assign(input,p1.in);reset(input); assign(output,p1.out);rewrite(output); read

7、(a,b,c,d); for i:=-10000 to 10000 do begin n:=i/100; y:=n*n*n*a+n*n*b+n*c+d; if abs(y)b then exit(a); exit(b);end;procedure inIt;var i,j:integer; s1:string;begin ss:=; readln(p,k); for i:=1 to p do begin readln(s1); ss:=ss+s1; end; n:= 20*p; readln(s); for i:=1 to s do readln(wordi); fillchar(g,size

8、of(g),0); fillchar(f,sizeof(f),0); for i:=1 to n do begin wi:=200; for j:=1 to s do if (copy(ss,i,length(wordJ)=wordj)and(length(wordj)wi)then wi := length(wordj); end; for i:=1 to n do for j:=i to n do for p:=i to j do if (wp+p-1=j) then gi,j:=gi,j+1;end;procedure solve;var i,j:integer;begin for i:

9、=1 to n do fi,1:=g1,i; for p:=2to k do for i:=p to n do for j:=p-1 to i-1 do fi,p:=max(fi,p,fj,p-1+gj+1,i); writeln(fn,k);end;begin assign(input,p3.in);reset(input); assign(output,p3.out);rewrite(output); init; solve; close(input);close(output);end.第四题:方法一:Folyd:const inf=1e+38;var s,a,b,m,n,t:longi

10、nt; tr:array1.100of longint; x,y:array1.100,1.4of longint; w:array0.400,0.400of real;function dis(x1,y1,x2,y2:longint):real;begin dis:=sqrt(sqr(x2-x1)+sqr(y2-y1);end;procedure solve;var i,j,k,i1,j1:longint; l:real;begin readln(s,t,a,b); if a=b then begin writeln(0.00); writeln; exit; end; for m:=1 t

11、o s do begin readln(xm,1,ym,1,xm,2,ym,2,xm,3,ym,3,trm); for i:=1 to 2 do for j:=1 to 3 do if ij then if (xm,j-xm,i)*(xm,6-i-j-xm,j)+(ym,j-ym,i)*(ym,6-i-j-ym,j)=0 then begin xm,4:=xm,i-xm,j+xm,6-i-j; ym,4:=ym,i-ym,j+ym,6-i-j; end; end; for i:=1 to s do for j:=1 to 4 do for k:=1 to 4 do w4*i-4+j,4*i-4

12、+k:=dis(xi,j,yi,j,xi,k,yi,k)*tri; for i:=1 to s do for i1:=1 to 4 do for j:=1 to s do if ij then for j1:=1 to 4 do w4*i-4+i1,4*j-4+j1:=dis(xi,i1,yi,i1,xj,j1,yj,j1)*t; for k:=1 to 4*s do for i:=1 to 4*s do if ik then for j:=1 to 4*s do if (wi,jwi,k+wk,j)and(jk)and(ji)then wi,j:=wi,k+wk,j; l:=1e38; fo

13、r i:=1 to 4 do for j:=1 to 4 do if wa*4-4+i,b*4-4+jl then l:=wa*4-4+i,b*4-4+j; writeln(l:0:2); writeln;end;begin assign(input,car.in);reset(input); assign(output,car.out);rewrite(output); readln(n); for t:=1 to n do solve; close(input);close(output);end.方法二:单元最短路径:const inf=1e+38;var s,a,b,m,n,t:lon

14、gint; tr:array1.100of longint; x,y:array1.100,1.4of longint; z:array0.100,1.4,1.4of real; f:array0.100,1.4,0.100,1.4of real; w:array0.100,1.4of real;function dis(x1,y1,x2,y2:longint):real;begin dis:=sqrt(sqr(x2-x1)+sqr(y2-y1);end;function dij(c:longint):real;var v:array1.100,1.4of boolean; i,j,k,g,m

15、c,mp:longint; min:real;begin fillchar(v,sizeof(v),false); for i:=1 to s do for j:=1 to 4 do wi,j:=fa,c,i,j; wa,c:=0; for i:=1 to 4 do va,i:=true; mc:=a; mp:=c; for j:=1 to 4*s-8 do begin min:=inf; for i:=1 to s do for k:=1 to 4 do if (not vi,k)and(wi,kwmc,mp+fmc,g,i,k+zmc,mp,g)then wi,k:=wmc,mp+fmc,

16、g,i,k+zmc,mp,g; end; min:=wb,1; for i:=2 to 4 do if wb,imin then min:=wb,i; exit(min);end;procedure solve;var i,j,i1,j1:longint; l,k:real;begin readln(s,t,a,b); for m:=1 to s do begin readln(xm,1,ym,1,xm,2,ym,2,xm,3,ym,3,trm); for i:=1 to 2 do for j:=1 to 3 do if ij then if (xm,j-xm,i)*(xm,6-i-j-xm,

17、j)+(ym,j-ym,i)*(ym,6-i-j-ym,j)=0 then begin xm,4:=xm,i-xm,j+xm,6-i-j; ym,4:=ym,i-ym,j+ym,6-i-j; end; for i:=1 to 3 do for j:=1 to 4 do if ij then begin zm,i,j:=dis(xm,i,ym,i,xm,j,ym,j)*trm; zm,j,i:=zm,i,j; end else begin zm,i,j:=inf; zm,j,i:=inf; end; end; for i:=1 to s do for i1:=1 to 4 do for j:=1

18、 to s do for j1:=1 to 4 do if ij then begin fi,i1,j,j1:=dis(xi,i1,yi,i1,xj,j1,yj,j1)*t; fj,j1,i,i1:=fi,i1,j,j1; end else begin fi,i1,j,j1:=inf; fj,j1,i,i1:=inf; end; if a=b then begin writeln(0.00); writeln; end else begin l:=1e38; for i:=1 to 4 do begin k:=dij(i); if kl then l:=k; end; writeln(l:0:

19、2); writeln; end;end;begin assign(input,car.in);reset(input); assign(output,car.out);rewrite(output); readln(n); for t:=1 to n do solve; close(input);close(output);end.方法三:单元最短路径(不是从1出发):const inf=1e38;var tt,n,s,t,a,b,m:integer; tr:array1.100of longint; x,y:array1.100,1.4of longint; w,z:array0.401,

20、0.401of real; f:array0.401 of real; max:extended;function dist(x1,y1,x2,y2:longint):real;begin dist:=sqrt(sqr(x2-x1)+sqr(y2-y1);end;function diska(a:longint):real;var v:array0.401 of boolean; k,mc,mp,i,j,p:longint; max:real;begin fillchar(v,sizeof(v),false); va:=true; for i:=1 to s do for j:=1 to 4

21、do f4*i-4+j:=wa,4*i-4+j; for j:=2 to 4*s do begin max:=inf; p:=a; for i:=1 to s do for k:=1 to 4 do if (f4*i-4+kfp+wp,4*i-4+k then f4*i-4+k:=fp+wp,4*i-4+k; end; max:=inf; for i:=1 to 4 do if maxfb*4-4+i then max:=fb*4-4+i; exit(max);end;procedure solve;var i,j,k,l:longint; ans,min:real;begin readln(

22、s,t,a,b); if a=b then begin writeln(0.00); writeln; exit; end; for m:=1 to s do begin readln(xm,1,ym,1,xm,2,ym,2,xm,3,ym,3,trm); for i:=1 to 2 do for j:=1 to 3 do if ij then if (xm,j-xm,i)*(xm,6-i-j-xm,j)+(ym,j-ym,i)*(ym,6-i-j-ym,j)=0 then begin xm,4:=xm,i-xm,j+xm,6-i-j; ym,4:=ym,i-ym,j+ym,6-i-j; en

23、d; end; for i:=1 to s do for j:=1 to 4 do for k:=1 to 4 do w4*i-4+j,4*i-4+k:=dist(xi,j,yi,j,xi,k,yi,k)*tri; for i:=1 to s do for j:=1 to 4 do for k:=1 to s do if ik then for l:=1 to 4 do w4*i-4+j,4*k-4+l:=dist(xi,j,yi,j,xk,l,yk,l)*t; ans:=inf; for k:=1 to 4 do begin min:=diska(4*a-4+k); if minans then ans:=min; end; writeln(ans:0:2); writeln;end;begin assign(input,car.in);reset(input); assign(output,car.out);rewrite(output); readln(n); for tt:=1 to n do solve; close(input); close(output);end.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1