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

上传人:b****6 文档编号:5808544 上传时间:2023-01-01 格式:DOCX 页数:13 大小:18.67KB
下载 相关 举报
noip普及组复赛模拟试题13答案.docx_第1页
第1页 / 共13页
noip普及组复赛模拟试题13答案.docx_第2页
第2页 / 共13页
noip普及组复赛模拟试题13答案.docx_第3页
第3页 / 共13页
noip普及组复赛模拟试题13答案.docx_第4页
第4页 / 共13页
noip普及组复赛模拟试题13答案.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

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

《noip普及组复赛模拟试题13答案.docx》由会员分享,可在线阅读,更多相关《noip普及组复赛模拟试题13答案.docx(13页珍藏版)》请在冰豆网上搜索。

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

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

越野跑

【描述】

 为了能在下一次跑步比赛中有好的发挥,贝茜在一条山路上开始了她的训练。

贝茜希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定:

奶牛独自进山的时间不得超过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个整数,为贝茜在按时回到农场的前提下,最多能跑到多远

【样例输入】

135321

u

f

u

d

f

【样例输出】

3

【题解】

模拟一下跑步的过程。

用s记录跑到第i段路并返回的时间

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

【参考程序】

programdfjk;

vari,s,m,t,u,f,d:

longint;

a:

array[1..100000]ofchar;

begin

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

fori:

=1totdo

readln(a[i]);

s:

=0;

fori:

=1totdo

begin

casea[i]of

'u':

s:

=s+u+d;

'f':

s:

=s+2*f;

'd':

s:

=s+u+d;

end;

ifs>=mthenbreak;

end;

ifs=mthenwriteln(i);

ifs>mthenwriteln(i-1);

end.

输入856231231

u

f

d

f

d

u输出2

输入98510430325314

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;       ifn='0'thenbeginwrite('0');exit;end;

       ifn[1]='-'thenbegin

               a[1]:

=n[1];

               write(a[1]);

       end;       fori:

=Ldownto1dobegin

               inc(j);   a[j]:

=n[i];

       end;

       i:

=2;       whilea[i]='0'doinc(i);

       ifa[1]='-'thenbegin

               forj:

=itoldo

               write(a[j])

       endelsebegin

               forj:

=itol+1do

               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

   584484

  【输出样例】

  24

  【解释】各个测试点一秒,

  但就这道题来说,n<=400,000,我们如果用枚举不会过全部数据,我们应设计出o(n)的算法来解决,这是单调队列就可以派上用场了。

具体做法是先正着扫一遍,再倒着扫一遍,找到每一个数的右极限与左极限,最后找出最大值。

vartemp,ans:

int64;

n,p,q,i,j:

longint;

a:

array[0..400000]oflongint;

b,r,l:

array[0..400000]oflongint;

begin

fillchar(b,sizeof(b),0);

readln(n);

fori:

=1tondo

read(a[i]);

p:

=1;q:

=0;

fori:

=1ton+1do

begin

while(p<=q)and(a[i]

begin

r[b[q]]:

=i;

dec(q);

end;

inc(q);b[q]:

=i;

end;

fillchar(b,sizeof(b),0);

p:

=1;q:

=0;

fori:

=ndownto0do

begin

while(p<=q)and(a[i]

begin

l[b[q]]:

=i;

dec(q);

end;

inc(q);b[q]:

=i;

end;

fori:

=1tondo

begin

temp:

=(r[i]-l[i]-1)*a[i];

iftemp>ansthenans:

=temp;

end;

writeln(ans);

end.

输入20

12883040321922123230451519375562635输出144

输入56

3000200018019028902900312045056050030021002300480840880890350550450760960860250260105011301140214020452065307531553255347034903240920930900930980890740760770825845855950198088068069023802390

输出21080

FarmerJohn给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛分配一个有效的密码。

一个有效的密码由L(3<=L<=15)个小写字母(来自传统的拉丁字母集'a'...'z')组成,至少有一个元音('a','e','i','o',或'u')和两个辅音(除去元音以外的音节),并且是按字母表顺序出现的(例如,'abc'是有效的,而'bac'不是)。

给定一个期望长度L和C个小写字母,写一个程序,打印出所有的长度为L、能由这给定的C个字母组成的有效密码。

密码必须按字母表顺序打印出来,一行一个。

你的程序只需输出前25,000个有效密码,即使后面还存在有效密码。

【输入】

第一行:

两个由空格分开的整数,L和C;

第二行:

C个空格分开的小写字母,密码是由这个字母集中的字母来构建的。

【输出】

 第一至?

行:

每一个输出行包括一个长度为L个字符的密码(没有空格)。

输出

行必须按照字母顺序排列。

如果存在多于25,000个有效密码,你的程序必须在输出25,000个有效密码后停止。

【样例输入输出】

passwd.in

passwd.out

46

atcisw

acis

acit

aciw

acst

acsw

actw

aist

aisw

aitw

astw

cist

cisw

citw

istw

 

解法:

纯碎的深搜吧............也就只有元音辅音的多少是要注意的了..........

 

var

        a:

array[0..28]ofchar;

        l,c,i,j,k:

longint;

        y:

setofchar;

        ch:

char;

proceduredfs(i,t:

longint;s:

string);

var

        yy,fy,j,j1:

longint;

begin

        ifk=25000thenexit;

        ift=lthenbegin

                yy:

=0;

                fy:

=0;

                forj1:

=1toldobegin

                        ifs[j1]inytheninc(yy)

                        elseinc(fy);

                end;

                if(yy<1)or(fy<2)thenexit;

                inc(k);

                writeln(s);

                exit;

        end;

        forj:

=i+1toc-l+(t+1)dodfs(j,t+1,s+a[j]);

end;

begin

        assign(input,'passwd.in');

        assign(output,'passwd.out');

        reset(input);

        rewrite(output);

        readln(l,c);

        fori:

=1toc-1doread(a[i],ch);

        read(a[c]);

        y:

=['a','e','i','o','u'];

        fori:

=1toc-1dobegin

                forj:

=i+1tocdobegin

                        ifa[i]>a[j]thenbegin

                                a[0]:

=a[i];

                                a[i]:

=a[j];

                                a[j]:

=a[0];

                        end;

                end;

        end;

        fori:

=1toc-l+1dobegin

                dfs(i,1,a[i]);

        end;

        close(input);

        close(output);

end.

输入68

aycistwz

输出acistw

acisty

acistz

aciswy

aciswz

acisyz

acitwy

acitwz

acityz

aciwyz

acstwy

acstwz

acstyz

acswyz

actwyz

aistwy

aistwz

aistyz

aiswyz

aitwyz

astwyz

cistwy

cistwz

cistyz

ciswyz

citwyz

istwyz

输入710

aycistwzbf

输出abcfist

abcfisw

abcfisy

abcfisz

abcfitw

abcfity

abcfitz

abcfiwy

abcfiwz

abcfiyz

abcfstw

abcfsty

abcfstz

abcfswy

abcfswz

abcfsyz

abcftwy

abcftwz

abcftyz

abcfwyz

abcistw

abcisty

abcistz

abciswy

abciswz

abcisyz

abcitwy

abcitwz

abcityz

abciwyz

abcstwy

abcstwz

abcstyz

abcswyz

abctwyz

abfistw

abfisty

abfistz

abfiswy

abfiswz

abfisyz

abfitwy

abfitwz

abfityz

abfiwyz

abfstwy

abfstwz

abfstyz

abfswyz

abftwyz

abistwy

abistwz

abistyz

abiswyz

abitwyz

abstwyz

acfistw

acfisty

acfistz

acfiswy

acfiswz

acfisyz

acfitwy

acfitwz

acfityz

acfiwyz

acfstwy

acfstwz

acfstyz

acfswyz

acftwyz

acistwy

acistwz

acistyz

aciswyz

acitwyz

acstwyz

afistwy

afistwz

afistyz

afiswyz

afitwyz

afstwyz

aistwyz

bcfistw

bcfisty

bcfistz

bcfiswy

bcfiswz

bcfisyz

bcfitwy

bcfitwz

bcfityz

bcfiwyz

bcistwy

bcistwz

bcistyz

bciswyz

bcitwyz

bfistwy

bfistwz

bfistyz

bfiswyz

bfitwyz

bistwyz

cfistwy

cfistwz

cfistyz

cfiswyz

cfitwyz

cistwyz

fistwyz

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

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

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