noip普及组复赛模拟试题13答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

越野跑

【描述】

为了能在下一次跑步比赛中有好的发挥,贝茜在一条山路上开始了她的训练。贝茜希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定:

奶牛独自进山的时间不得超过M秒(1 <=M<=10,000,000)。

整条山路被贝茜划分成T个长度相同的小段(1 <= T <= 100,000),并且,贝茜用S_i表示第i个小段的路况。S_i为u,f,d这3个字母之一,它们分别表示

第i个小段是上坡、平地,或是下坡。

贝茜要花U秒(1<=U<=100)才能跑完一段上坡路,跑完一段平地的耗时是F 秒(1<=F<=100),跑完一段下坡路要花D秒(1<=D<=100)。注意,沿山路原路返回的时候,原本是上坡路的路段变成了下坡路,原本是下坡路的路段变成

了上坡路。

贝茜想知道,在能按时返回农场的前提下,她最多能在这条山路上跑多远。【输入格式】

* 第1行: 5个用空格隔开的整数:M,T,U,F,以及D

*第2..T+1行:第i+1行为1个字母S_i,描述了第i段山路的路况

【输出格式】

*第1行:输出1个整数,为贝茜在按时回到农场的前提下,最多能跑到多远

【样例输入】

13 5 3 2 1

u

f

u

d

f

【样例输出】

3

【题解】

模拟一下跑步的过程。用s记录跑到第i段路并返回的时间

若s=m则输出i并退出,若s>m则输出I-1并退出。

【参考程序】

program dfjk;

var i,s,m,t,u,f,d:longint;

a:array[1..100000]of char;

begin

readln(m,t,u,f,d);

for i:=1 to t do

readln(a[i]);

s:=0;

for i:=1 to t do

begin

case a[i] of

'u':s:=s+u+d;

'f':s:=s+2*f;

'd':s:=s+u+d;

end;

if s>=m then break;

end;

if s=m then writeln(i);

if s>m then writeln(i-1);

end.

输入85 6 23 12 31

u

f

d

f

d

u 输出2

输入985 10 430 325 314

u

f

d

f

d

u

f

u

u

d

输出1

数字反转(reverse.pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。(参见样例2)

【输入】输入文件名为reverse.in。输入共一行,一个整数n。

【输出】输出文件名为reverse.out。

输出共一行,一个整数,表示反转后的新数。

【输入输出样例1】

reverse.in reverse.out

123 321

【输入输出样例2】

reverse.in reverse.out

-380 -83

【数据范围】 -1,000,000,000≤N≤1,000,000,000。

【程序】

Var i,j,l:longint; n,a:string;

Begin readln(n); L:=length(n);

j:=1; if n='0' then begin write('0'); exit; end;

if n[1]='-' then begin

a[1]:=n[1];

write(a[1]);

end; for i:=L downto 1 do begin

inc(j); a[j]:=n[i];

end;

i:=2; while a[i]='0' do inc(i);

if a[1]='-' then begin

for j:= i to l do

write(a[j])

end else begin

for j:=i to l+1 do

write(a[j]);

end; End.

输入 -290 输出 -92

253717 输出 717352 输入-800901860 输出-68109008

【问题描述】

最近,afy决定给TOJ印刷广告,广告牌是刷在城市的建筑物上的,城市里有紧靠着的N 个建筑。afy决定在上面找一块尽可能大的矩形放置广告牌。我们假设每个建筑物都有一个高度,从左到右给出每个建筑物的高度H1,H2…HN,且0

。要求输出广告牌的最大面积。

【输入文件】

中的第一行是一个数n (n<= 400,000 )

第二行是n个数,分别表示每个建筑物高度H1,H2…HN,且0

【输出文件】

输出文件ad.out 中一共有一行,表示广告牌的最大面积。

【输入样例】

6

5 8 4 4 8 4

相关文档
最新文档