文档库 最新最全的文档下载
当前位置:文档库 › noip备战模拟题

noip备战模拟题

noip备战模拟题
noip备战模拟题

吉祥数

c/cpp)

【问题描述】

为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。老师给每位同学发一张卡片,每张卡片上都有一个编号(此编号为非负数,且小于255),每个编号互不相同。老师制定了以下的游戏规则:第一轮,每位同学将自己卡片上编号的各位数字进行平方后再相加得到一组新数,编号在这组新数中出现的同学淘汰出局,第二轮,余下的同学再将编号的各位数字进行立方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,第三轮,余下的同学再将编号的各位数字进行4次方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,……,以此类推,经过n 轮后,仍留下来的同学,将获得圣诞特别礼物,卡片上的数即为2007年吉祥数。(假定班级人数不超过200人)

【输入文件】()

第1行为1个正整数n(n<8),表示有n轮游戏,第二行是卡片上互不相同的编号。

【输出文件】()

为剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。

【输入样例】

1

24 123 2 12 20 14 4 6 36 72

【输出样例】

2 6 12 24 72 123

圣诞树

c/cpp)

【问题描述】

圣诞特别礼物挂在一棵圣诞树上,这棵树有n层,每层有一件礼物,每件礼物都有一个价值,有的礼物还有一些连结线,与下层的礼物相连,领取礼物的规则如下:任选一件礼物,它的下面如果有连结线,则可以继续取它连结的礼物,以此类推,直至取到没有连结线的礼物才结束,你如果是第一个去取,怎样取才能获得最大的价值呢请你编一程序解决这一问题。【输入文件】()

第一行只有一个数据n(n<=100),表示有n层礼物,以下有n行数据,分别表示第1-n层礼物的状态,每行至少由一个数据构成,且第一个数据表示该礼物的价值,后面的数据表示它与哪些层的礼物相连,如果每行只有一个数据则说明这层礼物没有与下层礼物相连,每个数的大小均不超过10000。

【输出文件】()

输出文件只有一个数,表示获得的取大价值。

【输入样列】

3

12 2 3

20

30

【输出样列】

42

传话

c/cpp)

【问题描述】

兴趣小组的同学来自各个学校,为了增加友谊,晚会上又进行了一个传话游戏,如果a 认识b,那么a收到某个消息,就会把这个消息传给b,以及所有a认识的人。

如果a认识b,b不一定认识a。

所有人从1到n编号,给出所有“认识”关系,问如果i发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了i,1<=i<=n。

【输入文件】()

第一行是两个数n(n<1000)和m(m<10000),两数之间有一个空格,表示人数和认识关系数。

接下来的m行,每行两个数a和b,表示a认识b。1<=a, b<=n。认识关系可能会重复给出,但一行的两个数不会相同。

【输出文件】()

一共有n行,每行一个字符T或F。第i行如果是T,表示i发出一条新消息会传回给i;如果是F,表示i发出一条新消息不会传回给i。

【输入样例】

4 6

1 2

2 3

4 1

3 1

1 3

2 3

【输出样例】

T

T

T

F

暴力摩托

c/cpp)

【问题描述】

晚会上大家在玩一款“暴力摩托”的游戏,它拥有非常逼真的画面和音响效果,如疾驰而过的汽车呼啸声,摩托车的引擎声和转弯时轮胎与地面摩擦而产生的声音。而且它在游戏中加入了对抗成份,比赛中你可以使用拳、脚去干扰对方,使其落后于你,是不是很卑鄙啊游戏中千万不能手下留情,因为对手会主动攻击你。如果遇到开摩托车的警察,虽然也可以对他踢上一脚,但可得小心点呀,万一被他们捉住了,那就 GAME OVER 啦!

当然了,车子总是要加油的咯,已知赛道长S公里(S≤10000整数,且为10的倍数),赛车的油耗Q=1,即1公里路耗1个单位的油。Q不变,赛车的油箱为无穷大,同时在沿途的任何地方都可以加油。约定,每次加油的数量为整数,且为10的倍数,赛车的速度与赛车加油后的总油量有关。其关系如下表列出:

同时,汽车每加油一次需要耗费T分钟(T<=100不论加油多少,开始时的加油不计时间)当S,T给出之后,选择一个最优的加油方案。使汽车以最少时间跑完全程。

例如:当S=40,T=6(分钟),加油的方案有许多种,列出一些:

1)起点加油40,用时40/75≈小时

2)起点加油20,中途加20,用时20/90+20/90+6/60(化为小时)≈ 小时

【输入文件】()

仅一行,为两个整数S、T。

【输出文件】()

输出一行,为最少用时(保留二位小数)

【输入样例】

40 6

【输出样例】

1、吉祥数

c/cpp)

[问题描述]

为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。老师给每位同学发一张卡片,每张卡片上都有一个编号(此编号为非负数,且小于255),每个编号互不相同。老师制定了以下的游戏规则:第一轮,每位同学将自己卡片上编号的各位数字进行平方后再相加得到一组新数,编号在这组新数中出现的同学淘汰出局,第二轮,余下的同学再将编号的各位数字进行立方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,第三轮,余下的同学再将编号的各位数字进行4次方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,……,以此类推,经过n 轮后,仍留下来的同学,将获得圣诞特别礼物,卡片上的数即为2007年吉祥数。(假定班级人数不超过200人)

[输入文件]

输入文件ghillie .in 有两行,第1行为1个正整数n(n<8),表示有n轮游戏,第二行是卡片上互不相同的编号。

输出:剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。

[输出文件]

输出文件ghillie .out是1行,为剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。

[输入样例]

1

24 123 2 12 20 14 4 6 36 72

[输出样例]

2 6 12 24 72 123

思路分析

这是一道基础题,数据量不大,采用模拟法,将每一轮初始的编号数存在数组A中,这个数组中所有数的值在一轮中不能更改,这组数产生的新数用B数组来存放,然后将B数组与A数组进行比较,将A数组中没有的B数组中的数存入C数组,下一轮开始时,先初始化A数组,这时A数组就取C数组,程序中最好能自定义一个函数fj(n,k:integer),作用是将编号数n进行分解后,再将数字k次方,最后求和,函数值取这个和。另外输入数据时,由于第二行不知数据的个数,因此要用函数eoln来控制。

参考程序如下:

var a,b,c:array[1..200] of longint;

i,j,k,n,i1,i2,i3,t:integer; p:boolean; tem,s:longint;

function fj(n,k:integer):longint;

var x:array[1..20] of integer;

i,j,m:integer;s,s1,s2:longint;

begin i:=0; fillchar(x,sizeof(x),0);s:=0;

while n<>0 do

begin i:=i+1;

x[i]:=n mod 10;

n:=n div 10

end;

for j:=1 to i do

begin s1:=1;

for m:=1 to k do s1:=s1*x[j]; s:=s+s1;

end;

fj:=s

end;

begin

assign(input,'');

reset(input);

assign(output,'');

rewrite(output);

readln(n);

j:=0;

while not eof do

begin j:=j+1;

read(a[j]);

end;

for i:=2 to n+1 do

begin i2:=0;i3:=0;

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

fillchar(c,sizeof(c),0);

for k:=1 to j do

begin s:=fj(a[k],i);

i2:=i2+1;

b[i2]:=s;

end;

for k:=1 to j do

begin

p:=true;

for t:=1 to j do

if a[k]=b[t] then p:=false;

if p then begin i3:=i3+1;

c[i3]:=a[k];

end;

end;

j:=i3;

a:=c;

end;

for i:=1 to j-1 do

for k:=i+1 to j do

if a[i]>a[k] then begin

tem:=a[i];

a[i]:=a[k];

a[k]:=tem

end;

for i:=1 to j-1 do

write(a[i],' ');

write(a[j]);

close(input);

close(output);

end.

2、圣诞树

(c/cpp)

[问题描述]

圣诞特别礼物挂在一棵圣诞树上,这棵树有n层,每层有一件礼物,每件礼物都有一个价值,有的礼物还有一些连结线,与下层的礼物相连,领取礼物的规则如下:任选一件礼物,它的下面如果有连结线,则可以继续取它连结的礼物,以此类推,直至取到没有连结线的礼物才结束,你如果是第一个去取,怎样取才能获得最大的价值呢请你编一程序解决这一问题。[输入文件]

输入文件的第一行只有一个数据n(n<=100),表示有n层礼物,以下有n行数据,分别表示第1-n层礼物的状态,每行至少由一个数据构成,且第一个数据表示该礼物的价值,后面的数据表示它与哪些层的礼物相连,如果每行只有一个数据则说明这层礼物没有与下层礼物相连,每个数的大小均不超过10000。

[输出文件]

输出文件也只有一个数,表示获得的取大价值。

[输入样例]

3

12 2 3

20

30

[输出样例]

42

思路分析

本题有些同学可能会用从第一层开始往下搜索的方法来解,细细一看,层数最大达到100,肯定会超时。

本题类似于求最长不下降序列,采用动态规划,从最后一层开始往前推,用A数组保存每层的价值,用B数组保存从每层到最后一层所得的最大价值,如B[5]表示第5层开始,到第N层所得的最大价值。因此其动态方程为:B[i]=A[i]+MAX(与i层下面相连的所有层的价值),最后求出B数组中的最大值。

参考程序如下:

var a,b:array[1..100] of longint;

g:array[1..100,1..100] of 0..1;

n,i,j,k:integer;

procedure init;

var i,j,x:integer;

begin

assign(input,'');

reset(input);

assign(output,'');

rewrite(output);

readln(n);

for i:=1 to n do

begin read(x); a[i]:=x;

while not eoln do

begin read(x);

g[i,x]:=1;

end;

readln;

end;

end;

procedure work;

var i,j:longint; max:longint;

begin

b[n]:=a[n];

for i:=n-1 downto 1 do

begin max:=0;

for j:=i+1 to n do

if (g[i,j]=1) and (b[j]>max) then max:=b[j];

b[i]:=max+a[i];

end;

end;

procedure print;

var i:integer; max:longint;

begin max:=0;

for i:=1 to n do

if b[i]>max then max:=b[i];

writeln(max);

close(input);

close(output);

end;

begin

init;

work;

print;

end.

3、传话

(c/cpp)

[问题描述]

兴趣小组的同学来自各个学校,为了增加友谊,晚会上又进行了一个传话游戏,如果a 认识b,那么a收到某个消息,就会把这个消息传给b,以及所有a认识的人。

如果a认识b,b不一定认识a。

所有人从1到n编号,给出所有“认识”关系,问如果i发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了i,1<=i<=n。

[输入文件]

输入文件中的第一行是两个数n(n<1000)和m(m<10000),两数之间有一个空格,表示人数和认识关系数。

接下来的m行,每行两个数a和b,表示a认识b。1<=a, b<=n。认识关系可能会重复给出,但一行的两个数不会相同。

[输出文件]

输出文件中一共有n行,每行一个字符T或F。第i行如果是T,表示i发出一条新消息会传回给i;如果是F,表示i发出一条新消息不会传回给i。

[输入样例]

4 6

1 2

2 3

4 1

3 1

1 3

2 3

[输出样例]

T

T

T

F

思路分析

先把有向图建立起来:a[i,j]=1表示i能到j, 然后利用递归进行宽搜,搜索时注意从一点到另一点搜过一次就不能再搜,以免引起死循环。在搜索的过程中注意剪枝,否则有的点会超时。

参考程序如下:

const

maxn=1000;

var

n,m,i,j,x,y:longint;

a:array[1..maxn,1..maxn] of boolean;

v:array[1..maxn] of boolean;

function dfs(x,root:longint):boolean;

var

j:longint;

f:boolean;

begin

v[x]:=true; f:=false;

for j:=1 to n do begin

if a[x,j] and not v[j] then begin

f:=f or dfs(j,root);

if f then begin dfs:=true; exit; end;

end

else if (j=root) and (a[x,j]) then begin

dfs:=true; exit; end;

end;

dfs:=f;

end;

begin

assign(input,''); reset(input);

assign(output,''); rewrite(output);

readln(n,m);

fillchar(a,sizeof(a),false);

for i:=1 to m do begin

readln(x,y);

a[x,y]:=true;

end;

for i:=1 to n do begin

fillchar(v,sizeof(v),false);

if dfs(i,i) then writeln('T')

else writeln('F');

end;

close(input); close(output);

end.

4、暴力摩托

(c/cpp)

[问题描述]

晚会上大家在玩一款“暴力摩托”的游戏,它拥有非常逼真的画面和音响效果,如疾驰而过的汽车呼啸声,摩托车的引擎声和转弯时轮胎与地面摩擦而产生的声音。而且它在游戏中加入了对抗成份,比赛中你可以使用拳、脚去干扰对方,使其落后于你,是不是很卑鄙啊游戏中千万不能手下留情,因为对手会主动攻击你。如果遇到开摩托车的警察,虽然也可以对他踢上一脚,但可得小心点呀,万一被他们捉住了,那就 GAME OVER 啦!

当然了,车子总是要加油的咯,已知赛道长S公里(S≤10000整数,且为10的倍数),赛车的油耗Q=1,即1公里路耗1个单位的油。Q不变,赛车的油箱为无穷大,同时在沿途的任何地方都可以加油。约定,每次加油的数量为整数,且为10的倍数,赛车的速度与赛车加油后的总油量有关。其关系如下表列出:

加油量车速(公里/小时)

≤10100

(10,20 ]90

(20,30 ]80

(30,40 ]75

(40,+∞)70

同时,汽车每加油一次需要耗费T分钟(T<=100不论加油多少,开始时的加油不计时间)当S,T给出之后,选择一个最优的加油方案。使汽车以最少时间跑完全程。

例如:当S=40,T=6(分钟),加油的方案有许多种,列出一些:

1)起点加油40,用时40/75≈小时

2)起点加油20,中途加20,用时20/90+20/90+6/60(化为小时)≈ 小时

[输入文件]

一行,为两个整数S、T。

[输出文件]

输出一行,为最少用时(保留二位小数)

[输入样例]

40 6

[输出样例]

思路分析

当走到某一距离时,此时的最小用时,与后面的行程方案无关,也就是无后效性,符合动态规划的原则,将S以每10公里为一单位分成s div 10段,如s=40时,分法如下:

对应路段的最小用时用A数组存放。很显然A[1]=10/100,走到20公里处时的方案有:(1)从0公里处加20单位的油,所需最小用时为min=20/90;(2)先到10公里处,此时的最小用时为A[1],然后再加能到20公里的油,这段路的最小用时为:(20-10)/100,该方案的一共用时:A[1]+(20-10)/100。取两种方案的最小用时存入A[2],同样可以求出A[3]、A[4]的最小用时,从而推出动态方程:A[i]=min{t(0到i), A[1]+t(1到i), A[2]+t(2到i), ……,A[i-1]+t(i-1 到 i)}, 其中t(0到i)表示只在0公里处加油后,以后不再加油,t(1到i) 表示在10公里处加油后,以后不再加油, ……。

参考程序如下:

var s,t,i,j:longint;

a:array[1..1000] of real;

m,min:real;

begin

assign(input,'');

assign(output,'');

reset(input);

rewrite(output);

readln(s,t);

for i:=1 to s div 10 do {在0处加油后不再加油,到 i的最小用时,用min 存放} begin

case i of

1:min:=10/100;

2:min:=20/90;

3:min:=30/80;

4:min:=40/75;

else min:=i*10/70;

end;

for j:=1 to i-1 do {分别求各种方案的最小用时数}

begin

case i-j of

1:m:=10/100;

2:m:=20/90;

3:m:=30/80;

4:m:=40/75;

else m:=(i-j)*10/70;

end;

m:=m+t/60;{从j到i的最小用时}

if m+a[j]

end;

a[i]:=min;

end;

writeln(a[s div 10]:0:2);

close(input);

close(output);

end.

noip普及组编程模拟试题1

一、问题描述: 考虑在0和1之间的所有分母不大于N的最简分数。下面是N = 5时的情况: 0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1 问题求解: 编写一个程序,对于一个给定的整数N(1≤N≤100),按从小到大的顺序打印出这些分数,同时打印出它们的总的个数。 输入输出示例: N = 5 0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1 TOTAL = 11 二、某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。【输入文件】 输入文件tree.in的第一行有两个整数L(1 <= L <= 10000)和M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。 【输出文件】 输出文件tree.out包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。 【样例输入】 500 3 150 300 100 200 470 471 【样例输出】 298 【数据规模】 对于20%的数据,区域之间没有重合的部分; 对于其它的数据,区域之间有重合的情况。 三.代数表达式的定义如下: 代 数 表 达 式:

noip2013 模拟试题

排名(paiming.pas/c/cpp) [问题描述] 宁波市的小学生们在镇海中学完成程序设计比赛后,老师们批出了所有学生的成 绩,成绩按分数从高到低排名,成绩相同按年级从低到高排(注:纯属虚构,勿对号入座)。现在主办单位想知道每一个排名的学生前,有几位学生的年级低于他(她)。 [输入] 输入文件paiming.in,有若干行: 第1行只有一个正整数n(1<=n<=200),表示参赛的学生人数。 第2行至第n+1行共n行,每行有两个正整数s(0<=s<=400),g(1<=g<=6)。其中第 i+1行的第一个数s表示第i个学生的成绩,第i+1行第二个数g表示第i个学生的的年级。[输出] 输出文件paiming.out有n行,每行只有一个正整数,其中第i行的数k表示排第i名的学生前面有k个学生的排名比他(她)高,且年级比他(她)低。 [样例输入] 5 300 5 200 6 350 4 400 6 250 5 [样例输出] 1 1 3 [数据限制] 50%的数据,每个学生的成绩互不相同 种树(trees.pas) 【问题描述】 一条街的一边有几座房子。因为环保原因居民想要在路边种些树。路边的地区被分割成块,并被编号成1..N。每个部分为一个单位尺寸大小并最多可种一棵树。每个居民想在门前种些树并指定了三个号码B,E,T。这三个数表示该居民想在B和E之间最少种T棵树。当然,B≤E,居民必须记住在指定区不能种多于区域地块数的树,所以T≤E-B+l。居民们想种树的各自区域可以交叉。你的任务是求出能满足所有要求的最少的树的数量。 写一个程序完成以下工作: * 从trees.in读入数据

NOIP初赛模拟考试题及答案解析修订版

N O I P初赛模拟考试题 及答案解析 集团标准化小组:[VVOPPT-JOPP28-JPPTL98-LOPPNN]

信息学奥林匹克联赛初赛模拟试题 (普及组C语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,共30分) 1.被誉为“人工智能之父”的是()。 A.冯·诺依曼。 B.巴贝奇。 C.文顿·瑟夫和卡恩。 D.阿兰·图灵。 E.弗雷德里克·特曼。 2.下列哪个不是CPU(中央处理单元)()。 A.IntelItanium B.DDRSDRAM C.AMDAthlon64 D.AMDOpteron E.IBMPower5 3.常见的邮件传输服务器使用()协议发送邮件。 A.HTTP B.SMTP C.TCP D.FTP E. POP3 4.下列无符号数中,最小的数是()。 10 C.(37)8 D.(2A)16 5.下列哪个软件属于操作系统软件()。 A.MicrosoftWord B.Photoshop C.Foxmail D.WinRAR E.RedHatLinux 6.下列哪个不是计算机的存储设备()。 A.文件管理器 B.内存 C.高速缓存 D.硬盘 E.U盘 7.组成’教授’(jiaoshou)’副教授’(fujiaoshou)与’讲师’(jiangshi) 这三个词的汉字,在GB2312-80字符集中都是一级汉字.对这三个词排序的结果是()。 A教授,副教授,讲师B.副教授,教授,讲师 C讲师,副教授,教授D.副教授,讲师,教授 8.彩色显示器所显示的五彩斑斓的色彩,是由红色、蓝色和()色混合而成的。 A.紫 B.白 C.黑 D.绿 E.橙 9.以下哪个软件不是即时通信软件()。 A.网易泡泡 B.MSNMessenger C.GoogleTalk D.3DSMax E.QQ 10.一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行 相互转换的设备,这种设备是()。 A.调制解调器 B.路由器 C.网卡 D.网关 E.交换机 11.计算机病毒传染的必要条件是()。 A.在内存中运行病毒程序 B.对磁盘进行读写操作 C.在内存中运行含有病毒的程序 D.复制文件

NOIP竞赛模拟试题

NOIP2016普及组复赛模拟赛试卷 普及组 (请选手务必仔细阅读本页内容) 二.提交源程序文件名 三.编译命令(不包含任何优化开关) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。 3、统一评测时采用的机器配置为:CPU P4 3.0GHz,内存 2G,上述时限以此配置为准。 4、特别提醒:评测在Windows下进行,评测软件为cena8.0。

River Hopscotch (jump.pas/c/cpp) 【问题描述】 每年,奶牛们都举办一种特殊的跳房子游戏,在这个游戏中,大家小心翼翼地在河中的岩石上跳。这个游戏在一条笔直的河中进行,以一块岩石表示开始,以另一块距离起点L单位长度的岩石表示结束。在这两块岩石中间还有N 块岩石,每块的位置距离起点是 Di 个单位长度。 玩这个游戏的时候,每头牛从开始的那块岩石想办法要跳到表示结束的那块岩石上。中间只能在从某块岩石跳跃到另一块岩石,反复的这样跳。当然,不够敏捷的牛永远跳不到终点,最终只能落入河中。 农民 John 为他的牛感到自豪,每年都观看比赛。随着时间的推移,他对于那些胆小的只能跳过很短距离的牛感到厌烦。为了那些牛,其他农民会把岩石的间距弄得很小。他计划移除一些岩石,从而增加奶牛在跳跃时需要的最短距离。他不能移除开始和结束的两块岩石。但是除此之外他可以移除 M 块岩石。 FJ 希望知道他能够增加多少最短跳跃距离。求当他移除了M块岩石后,奶牛从开始跳到结束的岩石,每次跳跃的最短距离至多可以增加到多少。 【输入格式】 第1行: 三个用空格分开的整数,分别是 L, N 和 M。 第2..N+1行: 每行一个整数,表示中间N块岩石的位置,没有两块岩石处于同一位置。 【输出格式】 输出共一行一个整数,表示移除某M块岩石后,相邻岩石间距最小值的最大可能情况。 【输入样例】 25 5 2 2 14 11 21 17 【输出样例】 4 【输入说明】中间有 5 块岩石,坐标 2, 11, 14, 17 和 21。开始岩石在0,结束岩石在25。 【输出解释】没有移除任何岩石之前,最少需要跳2个单位长度,从0到2。当移除了位于 2 和 14的两块岩石后, 需要的最短跳跃距离就变成了4。(从 17 到 21 或从 21 到 25)。 【数据规模】 对于30%的数据: 0≤N≤100; 对于50%的数据: 0≤N≤5,000; 对于100%的数据:1≤L≤1,000,000,000;0≤N≤50,000;0

NOIP信息学初赛模拟试题C

信息学初赛模拟试题(四) 一、选择题:(选出每题正确的答案代码,填在括号里,1—10题为单选题,每小题只有一个正确答案,11—20题为不定项选择题,每小题有一个或一个以上的正确答案,共20题,每题,共30分) 1、二进制数01100100转换成十六进制数是()。 A.32 B.64 C.128 D.100 E.256 2、操作系统是一类重要的系统软件,下面几个软件中,不属于系统软件的是()。A.Java B.MS-DOS C.Linux D.Windows7 E.Unix 3、计算机病毒的传染是以计算机运行和()为基础的,没有这两个条件,病毒是不会传染的。 A.编辑文稿 B.读写磁盘 C.编程序 D.扫描图画 E.打印 4、因特网不属于任何个人,也不属于任何组织。其中在网络知识这一块中有一个英文简写ISP,它的中文意思是()。 A.因特网连接 B.因特网使用 C.因特网设计 D.因特网服务提供者 E.信息传输5、Internet给我们提供了资源共享、浏览、检索信息和远程登录等多种服务,下面几个选项中用于远程登录的是()。 A.WWW B.TCP/IP C.Telnet D.E-mail E.FTP 6、IE是目前流行的浏览器软件,它的工作基础是解释执行用()语言书写的文件。A.VC B.HTML C.BASIC D.HTTP E.VB 7、给出3种排序:插入排序、冒泡排序、选择排序。这3种排序的时间代价分别是()。A.O(n)、O(n2)、O(logn) B.O(logn) 、O(n)、O(n2) C.O(n2)、O(n)、O(logn) D.O(n2)、O(n)、O(n) E.O(n2)、O(n2)、O(n2) 8、一棵完全二叉树的结点总数为18,其叶结点数为()。 A.7个 B.8个 C.9个 D.10个 E.11个 9、在流程图的符号中,菱形框一般作为()。 A.起始框 B.判断框 C.输入输出框 D.处理工作框 E.结速框 10、在解决计算机主机与打印机之间速度不匹配时通常设置一个打印数据缓冲区,主要将要输出打印的数据依次写入该缓冲区,而打印机从该缓冲区中取出数据打印。该缓冲区应该是一个()结构。 A.堆栈 B.数组 C.线性表 D.队列 E.链表 11、多媒体技术中的“多媒体”的含义主要是指如()等多种表达信息的形式。A.磁盘 B.音箱 C.显示器 D.声音 E.图像 12、下面有关计算机知识说明,正确的是()。 A.在WINDOWS98操作系统下,删除磁盘中的文件时都先存放在回收站中 B.FOXMAIL是用于收发电子邮件的工具 C.文件夹组织是一个有层次的树状结构,其中最顶层的是桌面 D.存储器具有记忆能力,其中的信息任何时候都不会丢失 E.为了提高软件的测试效率,应该选择发现错误的可能性大的测试数据 13、对按关键字排序好的线性表进行二分查找,该线性表适合的存储结构为()。A.链接存储 B.索引存储 C.散列存储 D.顺序存储 E.循环存取14、一个栈的输入顺序为1、2、3、4、5,下列序列中可能是栈的输出序列的是()。A.54312 B.24135 C.21543 D.12534 E.12345 15、评价一个算法的好坏有多种指标,下列是算法评价指标的是()。

NOIP模拟试题三

NOIP模拟试题三 普及组复赛 题目名称手机数字积木家族书本整理 程序名称mobile.pas/c/cpp brick.pas/c/cpp famdy.pas/c/cpp book.pas/c/cpp 输入文件mobile.in brick.in family.in book.in 输出文件mobile.out brick.out family.out book.out 时间限制1秒1秒1秒1秒 一、手机(mobile.pas/c/cpp) 【问题描述】 一般的手机的键盘是这样的: 12abc3def 4ghi5jkl6mno 7pqrs8tuv9wxyz *0# 要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下,第一下会出w,而第二下会把w变成x。0键按一下会出一个空格。 你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。 【问题输入】 一行一个句子,只包含英文小写字母和空格,且不超过200个字符。 【问题输出】 一行一个整数,表示按键盘的总次数。 【样例输入】 i have a dream 【样例输出】 23 【数据范围】 如题目所示 二、数字积木(brick.pas/c/cpp) 【问题描述】 小明有一款新式积木,每个积木上都有一个数,一天小明突发奇想,要是把所有的积木排成一排,所形成的数目最大是多少呢? 你的任务就是读入n个数字积木,求出所能形成的最大数。 【问题输入】 第一行是一个整数n(n≤1000),接下来n行每行是一个正整数。 【问题输出】 所能形成的最大整数

【样例输入】 3 13 131 343 【样例输出】 34313131 【数据范围】 30%的数据,n≤l0,每个数<103。50%的数据,n≤l00。100%的数据,n≤1000,每个数<10200。 三、家族(family.pas/c/cpp) 【问题描述】 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝,但同一个家族的人不一定有相同姓氏。现在给你岛上的地图,求出岛上有多少个不同的家族。岛上的地图有n行,每行有若干列,每个格子中要么是“”,表示大海,要么是“*”,表示河流或山丘,要么是小写字母,表示一户人家的姓氏。 【问题输入】 第一行是个数字N,表示下面信息的行数。接下来是N行字符,每行由小写字母和*号组成,有些行的最前面也可能包含若干连续的空格,表示这些区域是大海,每一行最多不超过200个字符。 【问题输出】 一个数字,表示家族数。 【样例输入】 4 *zlw**pxh l*zlwk*hx* w*tyy**yyy zzl 【样例输出】 3 【数据范围】 10%的数据,n≤1。30%的数据,n≤10。100%的数据,n≤100每一行最多不超过200个字符。 四、书本整理(book.pas/c/cpp) 【问题描述】 小明的书架上放了许多书,为了使书架变得整洁,小明决定整理书架,他将所有书按高度大小排列,这样排了之后虽然整齐了许多,但小明发现,书本的宽度不同,导致书架看上去还是有些凌乱。小明把这个凌乱值定义为相邻两本书的宽度差的绝对值的和。 例如有4本书: 1×2 5×3 2×4

NOIP模拟题

Description Jzt小时候走路的时候,有一个习惯,踩着窨井盖走。(不知道有没有人小时候也有这种做法……) 踩窨井盖很爽,但是,jzt不希望走得太慢,因此,他希望每一步走过的距离的最小值最大。为了快一点走,jzt只好忍痛割爱,跳过一些窨井盖。但是,如果跳过太多,又会觉得不爽,因此,他决定,最多可以跳过M个窨井盖。 你可以认为jzt的腿无限长,不用担心一步跨不到…… Input 第一行三个数L,N,M,分别表示家的位置,有N个窨井盖,可以跳过M个窨井盖。 接下来N行,每行一个数Di,表示N个窨井盖的位置 Output 输出一行一个数,表示最小距离的最大值。 Sample Input 25 5 2 2 14 11 21 17 Sample Output 4 样例解释: 跳过位置2和位置14的窨井盖,剩下相邻的窨井盖中距离最小的是4,是17到21或者21到25 数据规模: 1<=L<=1,000,000,000 0<=N<=50,000 0<=M<=N 0

Description 由于hyf长得实在是太帅了,英俊潇洒,风流倜傥,人见人爱,花见花开,车见车载。有一群MM排队看hyf。每个MM都有自己独特的风格,由于hyf有着一颗包容的心,所以,什么风格的MM他都喜欢…… 但是,hyf有一个特别的要求,他不希望总是看到风格得差不多的MM,更加特别的是,如果两个MM风格完全一样,hyf不会有任何意见。 现在,hyf希望从去看他的MM中,去掉一些MM,从而使得相邻2个MM的风格值的差(绝对值)不为1。自然地,hyf希望去掉的MM越少越好。 Input 第一行一个整数N; 第2~N+1行N个整数,第i个为ci。表示第i个MM的风格值。 Output 一个数,表示最少要去掉的MM数。 Sample Input 6 4 2 2 1 1 1 Sample Output 2 数据规模: 对于10%的数据,N≤20 对于40%的数据,N≤2000,ci ≤ 1000 对于100%的数据,N≤200000 0 ≤ ci ≤ 1000000 对于前70%的数据,空间限制为64M 对于后30%的数据,空间限制为1M

NOIP模拟试题

A 六边形(hexagons.pas/c/cpp) TL:1S ML:256MB 【Description】 有一个由小正六边形拼成的大六边形,对边的长度是相同的(形状如图) (图中所示的是a=2,b=3,c=4的情况) 现在给出a, b, c,求构成六边形的小正六边形的数量 【Input】 一行三个整数a,b,c 【Output】 一个整数表示答案 【Sample Input】 2 3 4 【Sample Output】 18 【Hint】 2 <= a, b, c <= 1000

B 统计(count.pas/c/cpp) TL:1S ML:128MB 【Description】 求:所有的N位数中,有多少数各位数字的乘积是恰好K。请注意,这里的N位数是可以有前导零的。比如01,02视为二位数,但是他们各位数字的乘积都是0。 【Input】 一行两个整数N,K 【Output】 一个行一个整数表示结果。 【Sample Input】 2 3 【Sample Output】 2 【Sample Input】 2 0 【Sample Output】 19 【Hint】 样例解释1:13、31。 样例解释2:00, 01, 02 .., 09,10, 20,..90 对于20%:N <= 6。

对于50%:N<=16 存在另外30%:K=0。 对于100%:N <= 50,0 <= K <= 10^9。

C 幻方(magicsquare.pas/c/cpp) TL:1S ML:128MB 【Description】 给定N*N个数,把它们填入N*N的方格中,使每行每列和两个斜对角线里数的和都相等。【Input】 第一行一个正整数N 第二行N*N个整数,代表要填入幻方中的数 【Output】 N行每行N个整数,用空格隔开,代表填好的幻方。 如果有多组解,输出任意一组即可。 保证有解。 【Sample Input1】 3 9 9 9 9 9 9 9 9 9 【Sample Output1】 9 9 9 9 9 9 9 9 9 【Sample Input2】 3 1 2 3 4 5 6 7 8 9 【Sample Output2】

NOIP模拟试题

全国信息学奥林匹克联赛(NOIP2011)复赛 提高组 模拟模拟试题试题试题(二试) (二试)(请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称密码子翻译苹果二叉树青蛙王子的口令 英文题目与子目录名cell apple order 可执行文件名cell apple order 输入文件cell.in apple.in order.in 输出文件cell.out apple.out order.out 每个测试点时限1秒1秒1秒测试点数目101010每个测试点分值101010附加样例文件有有 有 结果比较方式全文比较(过滤行末空格及文末回车) 题目类型 传统 传统 传统二.提交源程序文件名 三.运行内存限制 对于pascal 语言cell.pas apple.pas order.pas 对于C 语言cell.c apple.c order.c 对于C++语言 cell.cpp apple.cpp order.cpp 内存上限 128M 128M 128M

1.密码子翻译 (cell cell.pas/c/cpp) .pas/c/cpp)【问题描述】 DNA 是一切细胞生物的遗传物质。它能指导蛋白质的合成,从而控制细胞的新陈代谢和生物的性状。 中心法则(genetic central dogma )是所有有细胞结构的生物所遵循的法则,它的主要内容是遗传信息从DNA 传递给mRNA ,再从mRNA 传递给蛋白质的转录和翻译的过程(如图)。 mRNA 是由许多核糖核苷酸组成的链状分子,但这些核糖核苷酸不外乎4种:腺嘌呤核糖核苷酸(A ),鸟嘌呤核糖核苷酸(G ),胞嘧啶核糖核苷酸(C )和尿嘧啶核糖核苷酸(U )。mRNA 上三个相邻的核糖核苷酸序列叫做密码子,一个密码子可以翻译成一个氨基酸,且密码子不重叠。已知:一条mRNA 只能翻译成若干种氨基酸,并且知道决定这些氨基酸的密码子。给出一条mRNA 的核糖核苷酸序列,请你计算出它最多能翻译成多少氨基酸。【输入】 输入文件名为cell.in 。 第一行,一个长度为l 的字符串,表示核糖核苷酸序列。 接下来若干行,每行一个密码子,只有这些密码子能够翻译成氨基酸。相同的密码子不重复出现。 输入数据仅由A 、G 、C 、U 四个大写字母组成。【输出】 输出文件名为cell.out 。 只有一个正整数N ,表示给出的核糖核苷酸序列组成的mRNA 最多能翻译成氨基酸的数目。 【输入输出样例1】【输入输出样例 1说明】 在核糖核苷酸序列ACACGAUC 中标出密码子:ACACGAUC 这样最多只能选取CAC 、 AUC 两个密码子翻译,即输出2。 cell cell.in .in cell.out ACACGAUC CAC AUC CGA 2

NOIP复赛模拟试题I.doc

NOIP 复赛模拟试题(I ) 1. 医院设置(hospital.cpp ) 【问题描述】 设有一棵二叉树(如下閔,其中圈中的数字表示结点中居民的人口,圈边h 数字表示结 点编号。现在要求在某个结点上建立一个返院,使所奋佔W 所走的路程之和为最小,同吋约 定,相邻结点之 M 的距离为1。就木阁而言,若医院建在1处,则距离和 =4+12+2*20+2*40=136;若民院建在 3 处, 则距离和=4*2+13+20+40=81…… 【输入格式(hospital.in )] 其中第一行一个整数n,表示树的结点数(n<=100)。接K 来的n 行 每行描述了 一个结点的状况,包含三个整数,整数之间川空格(一 个或多个)分隔,其中:第一个数为店民人口数;第二个数为左链 接,为0表示无链接;第三个数为右链接,为0表示无链接。 【输出格式(hospital.out )】 该文件只有一个整数,表示最小距离和。 【样例输入】 5 1323 400 12 4 5 20 0 0 40 0 0 【样例输出】 81 2. 而税(area.cpp ) 【问题描述】 编程计算由“ * ”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线中 水平线和垂直线交点的数目。如右K 图所示,在10*10的二维数组中,有“围住了 15个点, 因此面积为15。在输入中,为了方便起见使用“1”来代替右图中的“*”。。 【输入格式(area.in )】 ° 输入数据保证仅冇一个10*10的01矩阵 ° 【输出格式(area.out )】 o 0 0 0 0 一个数,表示面积 【样例输入】

0000000000 0000111000 0000100100 00000 10010 0010001010 ()10101 0 0 1 0 010******* 0010000100 000 1111100 0000000000 【样例输出】 15 3.极值问题(number.cpp) 【问题描述】 已知m、n为整数,且满足下列两个条件: ①m、nG { 1 , 2 ,…,k},即Km, n^k ②(n2—m*n —m2) 2=1 你的任务是:编程输入正整数k (l

NOIP2010模拟试题

NOIP2010 模拟试题 故事背景: 话说小FF在经历了上次“寻找古代王族遗产”的探险后,成为了世界上最伟大的探险家并拥有了一大笔财富。当然他不能坐吃山空,必须创造财富!!于是他买下了传说中的Greed Island并优先发展那里的采矿业……他还将其称为Greed Island的“NewBe_One”计划。 试题一: 新的开始 【题目描述】 发展采矿业当然首先得有矿井,小FF花了上次探险获得的千分之一的财富请人在岛上挖了n口矿井,但他似乎忘记考虑的矿井供电问题…… 为了保证电力的供应,小FF想到了两种办法: 1、在这一口矿井上建立一个发电站,费用为v(发电站的输出功率可以供给任意多个矿井)。 2、将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为p。 小FF希望身为”NewBe_One" 计划首席工程师的你帮他想出一个保证所有矿井电力供应的最小花费。 【输入格式】 第一行一个整数n,表示矿井总数。 第2~n+1行,每行一个整数,第i个数v[i]表示在第i口矿井上建立发电站的费用。 接下来为一个n*n的矩阵P,其中p[ i , j ]表示在第i口矿井和第j口矿井之间建立电网的费用(数据保证有p[ i, j ] = p[ j, i ], 且p[ i, i ]=0)。 【输出格式】 仅一个整数,表示让所有矿井获得充足电能的最小花费。 【输入样例】 4 5 4 4 3 0 2 2 2 2 0 3 3 2 3 0 4 2 3 4 0 【输出样例】 9 输出样例说明: 小FF可以选择在4号矿井建立发电站然后把所有矿井都与其建立电网,总花费是3+2+2+2 = 9。 【数据范围】 对于30%的数据:1<=n<=50; 对于100%的数据:1<=n<=300; 0<=v[i], p[i,j] <=10^5.

noip模拟题

计算(a+b)*c的值 Time Limit:1000MS Memory Limit: 128MB abc.cpp/c/pas Description 给定3个整数a、b、c,计算表达式(a+b)*c的值。 Input 输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。 (-10,000 < a,b,c < 10,000) Output 输出一行,即表达式的值 Sample Input 2 3 5 Sample Output 25 Hint

最高的分数 Time Limit:1000MS Memory Limit: 128MB high.cpp/c/pas Description 孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗? Input 输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。Output 输出一个整数,即最高的成绩。 Sample Input 5 85 78 90 99 60 Sample Output 99 Hint

Nim游戏 Time Limit:1000MS Memory Limit: 128MB nim.cpp/c/pas Description 有N(1<=N<=100)堆石子,每堆个数给定A1..AN(1<=Ai<=2,147,483,647)请注意数据类型的选择,现有甲乙两人轮流取石子,由甲开始,每次选一堆,取走任意数目石子,不能不取。不能取者负,求甲是否获胜。假定每人都采取最优策略。 Input 多组nim.in 第一行:一个数T,组数 每组第一行:一个数N。 以下N行:每堆石子数Ai Output nim.out 对于每组输入,输出结果。输出Win 或是Lose Sample Input 2 2 3 3 3 2 4 6 Sample Output Lose Lose Hint

C++NOIP模拟试题

题目一览 1.这也叫破译?(crack) 【题目描述】 NOIP吧是个很和谐的吧,一直为了OI事业而奋斗。但是,由于吧的日益壮大,各种矛盾还是避免不了。 这两天,传说中的NOIP吧官方群群主接到一封神秘而好笑的信。神秘在于信的表面有两个特别大的字——神秘(⊙﹏⊙b汗);好笑在于信的开头说,你一定猜不出这封信源自何处,结尾处署名CCF(⊙﹏⊙b汗)。 言归正传,CCF的信让老练的群主大吃一惊,觉得也没有招惹过CCF啊。信中说这封信的内容加密过了,你需要完成这封信上的任务,完成之后内容就会自然的显现了(这也叫破译?⊙﹏⊙b汗)。群主觉得这等小事何足挂齿,只是最近ACM那边很多事啊,所以交给你了。(什么?你要推脱?告诉你,群主是个愤青,impossible!!!)

信中给了n 个单词,每个单词都由小写字母构成。信的后面给了一个字母表,字母表如下: a b c d e f g h i j k l m n o p q r s t u v w x y z 4 2 5 6 1 4 5 6 7 2 3 4 8 9 3 1 2 6 8 9 2 6 3 2 5 7 这些字母对应一个数字,暂且称作:权值。一个单词的权值定义为单词所含的字母的权值之和。你的任务是按权值降序(从大到小),(若权值相等,按字符串排序。注:两个字符串先输出长度大的,长度相同输出字典序大的,完全相同则直接输出)输出前m(1<=m<=n)个单词和单词的权值。 【输入格式】 输入文件crack.in包含n+1行; 第一行是整数n,m,表示单词的个数和所需输出的单词的个数; 第2~n+1行,每行一个单词。 【输出格式】 输出文件crack.out包含m行。 第1~m行,每行一个单词和一个权值,单词和权值之间用一个空格隔开。【输入样例】 10 10 noip noi ceoi ctsc apoi usaco nocow vijos tyvj 【输出样例】ctsc 27 vijos 26 nocow 23 crack 23 usaco 22 tyvj 22 noip 20 noi 19 ceoi 16 apoi 15

NOIP2018年提高组初赛模拟试题

第二十三届全国青少年信息学奥林匹克联赛初赛 提高组 PASCAL语言模拟试题 竞赛时间:2017年 10 月 14 日 14:30~16:30 选手注意: ●试题纸共有 13 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写 在试题纸上的一律无效。 ●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共 15 题,每题 1.5 分,共计 22.5 分;每题有且仅有一个正 确选项) 1.1956年()授予肖克利(William Shockley)、巴丁(John Bardeen) 和布拉顿(Walter Brattain),以表彰他们对半导体的研究和晶体管效应的发 现。 A. 诺贝尔物理学奖 B. 约翰·冯·诺依曼奖 C. 图灵奖 D. 高德纳奖(Donald E. Knuth Prize) 2.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照 CapsLock、 字母键 A、字母键 S 和字母键 D 的顺序来回按键,即 CapsLock、A、S、D、S、 A、CapsLock、A、S、D、S、A、CapsLock、A、S、D、S、A、……,屏幕上输 出的第 81 个字符是字母()。 A. A B. S C. D D. A 3.二进制数 00101100 和 01010101 异或的结果是()。 A. 00101000 B. 01111001 C. 01000100 D. 00111000 4.与二进制小数 0.1 相等的八进进制数是()。 A. 0.8 B. 0.4 C. 0.2 D. 0.1 5.以比较作为基本运算,在 N 个数中找最小数的最少运算次数为()。 A. N B. N-1 C. N2 D. log N 6.表达式 a*(b+c)-d 的后缀表达形式为()。 A. abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd 7.一棵二叉树如右图所示,若采用二叉树链表存储该二叉 树(各个结点包括结点的数据、左孩子指针、右孩子指 针)。如果没有左孩子或者右孩子,则对应的为空指针。 那么该链表中空指针的数目为()。 A. 6 B. 7 C. 12 D. 14 8.G 是一个非连通简单无向图,共有 28 条边,则该图至少有()个顶点。

noip备战模拟题(有解答)

吉祥数 c/cpp) 【问题描述】 为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。老师给每位同学发一张卡片,每张卡片上都有一个编号(此编号为非负数,且小于255),每个编号互不相同。老师制定了以下的游戏规则:第一轮,每位同学将自己卡片上编号的各位数字进行平方后再相加得到一组新数,编号在这组新数中出现的同学淘汰出局,第二轮,余下的同学再将编号的各位数字进行立方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,第三轮,余下的同学再将编号的各位数字进行4次方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,……,以此类推,经过n 轮后,仍留下来的同学,将获得圣诞特别礼物,卡片上的数即为2007年吉祥数。(假定班级人数不超过200人) 【输入文件】() 第1行为1个正整数n(n<8),表示有n轮游戏,第二行是卡片上互不相同的编号。 【输出文件】() 为剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。 【输入样例】 1 24 123 2 12 20 14 4 6 36 72 【输出样例】 2 6 12 24 72 123 圣诞树 c/cpp) 【问题描述】 圣诞特别礼物挂在一棵圣诞树上,这棵树有n层,每层有一件礼物,每件礼物都有一个价值,有的礼物还有一些连结线,与下层的礼物相连,领取礼物的规则如下:任选一件礼物,它的下面如果有连结线,则可以继续取它连结的礼物,以此类推,直至取到没有连结线的礼物才结束,你如果是第一个去取,怎样取才能获得最大的价值呢请你编一程序解决这一问题。【输入文件】() 第一行只有一个数据n(n<=100),表示有n层礼物,以下有n行数据,分别表示第1-n层礼物的状态,每行至少由一个数据构成,且第一个数据表示该礼物的价值,后面的数据表示它与哪些层的礼物相连,如果每行只有一个数据则说明这层礼物没有与下层礼物相连,每个数的大小均不超过10000。

2014noip复赛模拟练习10(答案)

喜羊羊运动会——撑杆跳高 【试题描述】 运动会马上就要开始了,撑杆跳高场地上,羊村的N(3 <= N <= 100 )个村民正排成一队有秩序地练习。“好高啊,我都不知道自己能不能跳过去”,懒羊羊慢条斯理地说道。“这么高,不知道最少要几只羊叠在一起才会够得着”,沸羊羊向来比较喜欢思考数学问题,这样说道。 试编一程序,计算出最少要几只羊叠在一起(一头羊踩在另一头羊的背上)才能够得着横杆(所谓够得着,指羊的身高总和不小于横竿的高度B)。如果N头羊叠在一起,都够不着横竿,则输出“Impossible” 【输入描述】 第一行:两个整数N(3 <= N <= 100 )和B,表示队伍中羊的总数以及横竿的高度。 第二行:空格隔开的N个整数,表示每只羊的身高Hi(1 <= Hi <= 10000 )。【输出描述】一行,一个整数,表示最少要几头羊才能够到横竿。如果N只羊叠在一起都够不着则输出“Impossible”。 【输入样例】 样例1: 5 23 6 8 1 3 9 样例2: 6 16 1 2 3 1 3 5 【输出样例】 样例1:3 样例2:Impossible 【试题来源】武进区夏令营程序设计小能手PK program ex1797; var n,i,j,t,sum:integer; b,s:real; a:array[1..100] of integer; begin readln(n,b); for i:=1 to n do read(a[i]); for i:=1 to n-1 do for j:=i+1 to n do if a[i]

NOIP初赛模拟试题及答案

NOIP初赛模拟试题及答案 一、选择题(共20题,每题1.5分,共计30分。每题有5个备选答案,前10个题为单选题,即 每题有且只有一个正确答案,选对得分;后10题为不定项选择题,即每题有1至5个正确答案,只 有全部选对才得分)。 1.微型计算机的性能主要取决于()。 A)内存B)主板C)中央处理器D)硬盘E)显示器 2. 128KB的存储器用十六进制表示,它的最大的地址码是( ) A)10000 B)EFFF C)1FFFF D)FFFFF E)FFFF 3.能将高级语言程序转换为目标程序的是( ). A)调试程序B)解释程序C)编辑程序D)编译程序E)连接程序 4.A=11001010B,B=00001111B,C=01011100B,则A∨B∧C=( )B A)01011110 B)00001111 C)01011100 D)11001110 E)11001010 5.计算机病毒传染的必要条件是( ) 。 A)在内存中运行病毒程序 B)对磁盘进行读写操作 C)在内存中运行含有病毒的可执行程序 D)复制文件 E)删除文件 6. TCP/IP协议共有( )层协议 A)3 B)4 C)5 D)6 E)7 7.192.168.0.1是属于( ). A)A类地址B)B类地址B)C类地址D)D类地址E)E类地址 8.对给定的整数序列(54,73,21,35,67,78,63,24,89)进行从小到大的排序时,采用快速排序的第 一趟扫描的结果是( ). A)(24,21,35,54,67, 78,63,73,89) B)(24,35,21,54,67, 78,63,73,89) C)(24,21,35,54,67, 63,73,78,89) D)(21,24,35,54,63, 67,73,78,89) E)(24,21,35,54,67, 63,73,78,89) 9.一棵n个结点的完全二叉树,则二叉树的高度h为( ). A)n/2 B)log2n C)(log2n)/2 D) [log2n]+1 E)2n-1

noip信息学联赛2019模拟试卷(四)

第二十五届全国青少年信息学奥林匹克联赛初赛 (普及组 C++语言试题) 竞赛时间:2019年10月13日14:30~16:30 选手注意: ●试题纸共有7页,答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸 上一律无效。 ●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料一.单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)1.(2019)12+(9102)16=:

14.dos、unix和windows的共同点是: A:都是硬件B:都是联网系统软件C:都是应用软件D:都已经过时15.html是一种高级语言,以下操作可以查看html代码的是: A:打开浏览器按F11 B:运行html.exe C:无法查看D:打开浏览器按F12 16.以下关于计算机病毒的说法正确的是: A:防火墙可以防止感染B:通过生物传播 C:一旦感染无法破解D:计算机一次感染终身免疫 17.c++语言“实数下取整”操作是: A:(int)x B:float(x) C:floor(x) D:ceil(x) 18.一棵n层二叉树的最多节点数减去最少节点数等于: A:2*n B:2n-n C:n2-n D:n*log2(n)-n 19.现给出以下程序: #include using namespace std; int i,x; int a[11]={0,10,2,3,5,14,8,20,1,7,-1}; int main() { cin>>x; sort(a+1,a+11); for (i=1;i<=10;i++) if (a[i]>=x) break; cout<

Noip模拟试题7.16

Noip模拟试题 题目名称奖学金集合删数极值问题卡片 reward number maxf punch 源文件名 (.c/.cpp/.pas) 输入文件名reward.in number.in maxf.in punch.in 输出文件名reward.out number.out maxf.out punch.out 时间限制(s) 1 1 1 1 空间限制(MB)64 64 64 64 奖学金(reward) 【题目描述】 期末考试终于完了,老班决定召开班委会,内容嘛,则是可爱的奖学金的问题((*^__^*)),她叫来了一些班委,每位班委提出了自己的意见:“我认为同学a的奖学金应该比b多!”老班决定要找出一种奖学金方案,满足各位班委的意见,且同时使得总奖学金数最少。每位同学奖学金最少为100元且都为整数。 【输入】 第一行两个整数n,m,表示同学总数和班委意见数; 以下m行,每行2个整数a,b,表示某个班委认为第a号同学奖学金应该比第b号同学高。 【输出】 若无法找到合法方案,则输出“impossible”(不含引号);否则输出一个数表示最少总奖学金。 【样例输入】 2 1 1 2 【样例输出】 201 【数据范围】 100%的数据满足n<=10000,m<=20000。 集合删数(number) 【题目描述】 一个集合有如下元素:1是集合元素;若P是集合的元素,则2 * P +1,4*P+5也是集合的元素,取出此集合中最小的K个元素,按从小到大的顺序组合成一个多位数,现要求从中

删除M个数位上的数字,使得剩下的数字最大,编程输出删除前和删除后的多位数字。【输入】 输入的仅一行,K,M的值 【输出】 输出为两行,第一行为删除前的数字,第二行为删除后的数字。 【样例输入】 5 4 【样例输出】 137915 95 【数据范围】 K,M均小于等于30000 极值问题(maxf) 【题目描述】 已知m、n为整数,且满足下列两个条件: ① m、n∈1,2,…,K ,(1≤K≤10^9) ② (n^ 2-mn-m^2)^2=1 编一程序,对给定K,求一组满足上述两个条件的m、n,并且使m^2+n^2的值最大。例如,若K=1995,则m=987,n=1597,则m、n满足条件,且可使m^2+n^2的值最大。 【输入格式】 输入仅一行,K的值。 【输出格式】 输出仅一行,m^2+n^2的值 【样例输入】 1995 【样例输出】 3524578 卡片(punch) 【题目描述】 “在逃离诺莫瑞根的时候,我们留下了太多的数据!非常重要的数据!”大机械师卡斯派普十分着急地说,“尽管我们已经从矩阵打孔计算机上拿回了许多彩色穿孔卡片,但是混乱的数据令人无法忍受!” 自从诺莫瑞根陷落以后,侏儒们一直寄居在铁炉堡中。大机械师卡斯派普花了不少钱来悬赏勇士们去诺莫瑞根替他取回一些卡片,现在他已经有了一大堆彩色穿孔卡片。但是这些卡片都是残缺不全的,有的甚至还是无效的,想从这些破烂中恢复数据,实在是一件不容易的事。卡斯派普发现每个卡片的开头和结尾都有标记,记录着它原本在矩阵打孔计算机中序列的位置,于是想出了一个恢复数据的方法。把每个卡片的开头和结尾都有标记,把每张卡

相关文档