NOIP2007复赛普及组试题
NOIP2007提高组复赛试题
全国信息学奥林匹克联赛(NOIP2007)复赛提高组题目一览(2007年11月17日 3小时完成)说明:1.文件名(程序名和输入输出文件名)必须使用小写2.C/C++中函数main()的返回值必须是int,程序正常结束时返回值必须是0。
3.全国统一评测时采用的机器参考配置为:CPU 2.0GHz,内存256M。
1.统计数字(count.pas/c/cpp)【问题描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。
已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
【输入】输入文件count.in包含n+1行;第一行是整数n,表示自然数的个数;第2~n+1每行一个自然数。
【输出】输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。
每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
【输入输出样例】【限制】40%的数据满足:1<=n<=100080%的数据满足:1<=n<=50000100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)2.字符串的展开(expand.pas/c/cpp)【问题描述】在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母H 或数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。
在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。
具体约定如下:(1) 遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“-”,减号两侧同为小写字母或同为数字,且按照ASCII码的顺序,减号右边的字符严格大于左边的字符。
NOIP2007年信息学奥赛普及组复赛参考答案
2007普及组复赛C语言答案;1.奖学金;(scholar.pas/c/cpp);【问题描述】;某小学最近得到了一笔赞助,打算拿出其中一部分为学;任务:先根据输入的3门课的成绩计算总分,然后按上;7279;5279;这两行数据的含义是:总分最高的两个同学的学号依次;7279;则按输出错误处理,不能得分;【输入】;输入文件scholar.in包含行n+1行:;2007普及组复赛C语言答案1.奖学金(scholar.pas/c/cpp)【问题描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。
期末,每个学生都有3门课的成绩:语文、数学、英语。
先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。
注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。
例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:7 2795 279这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。
这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。
如果你的前两名的输出数据是: 5 2797 279则按输出错误处理,不能得分。
【输入】输入文件scholar.in包含行n+1行:第l行为一个正整数n,表示该校参加评选的学生人数。
第2到年n+l行,每行有3个用空格隔开的数字,每个数字都在0到100之间。
第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。
每个学生的学号按照输入顺序编号为1~n(恰好是输入数据的行号减1)。
所给的数据都是正确的,不必检验。
【输出】输出文件scholar.out共有5行,每行是两个用空格隔开的正整数,依次表示前5名学生的学号和总分。
NOIP普及组历届试题分析
对于100%的数据,3 ≤ n ≤ 100 测验题给出的正整数大小不超过10,000。
试题分析
题意大意:给你n个数,在这n个数中,找 到满足A+B=C的C的个数,注意不是这个 等式的个数。
样例中,1,2,3,4有1+2=3,1+3=4两个。
由于本题数据规模n<=100,我们可以直接
枚举C, A, B,三层循环解决问题。
扫雷游戏 (noip2015普及组第二题)
输入样例 1 33 *?? ??? ?*? 输入样例 2 23 ?*? *??
输出样例 1 mine.out *10 221 1*1 输出样例 2 mine.out 2*1 *21
对于 100%的数据,1≤n≤100,1≤m≤100
问题分析:
本题也是简单的枚举类试题。 我们从雷区的第一行第一列(1,1)开始,判断它周围 有多少个地雷。 由于本题读入的是字符,读入时需要注意: readln(n,m); for i=1 to n do begin for j=1 to m do read(a[i][j]); readln; end;
比例简化 (noip2014普及组第二题)
在社交媒体上,经常会看到针对某一个观点同意与 否的民意调查以及结果。例如,对某 一观点表示 支持的有 1498 人,反对的有 902 人,那么赞同与 反对的比例可以简单的记为1498:902。 不过,如果把调查结果就以这种方式呈现出来,大 多数人肯定不会满意。因为这个比例的数值太大, 难以一眼看出它们的关系。对于上面这个例子,如 果把比例记为 5:3,虽然与 真实结果有一定的误差, 但依然能够较为准确地反映调查结果,同时也显得 比较直观。 现给出支持人数 A,反对人数 B,以及一个上限 L, 请你将 A 比 B 化简为 A’比 B’,要求在 A’和 B’均 不大于 L 且 A’和 B’互质(两个整数的最大公约数 是 1)的前提下,A’/B’ ≥ A/B 且 A’/B’ - A/B 的值 尽可能小。
noip普及组复赛模拟试题8(答案)
Description 给定整数n(32位以内),判断它是否为2的方幂。
是就输出'yes',否则输出'no'。
Input 一个整数n。
Output 一个字符串Sample Input 4Sample Output yesHintn > 0 && ( ( n & ( n - 1 ) ) == 0貌似是数学问题,套用了提示program ex1560;var n:longint;beginreadln(n);if (n>0) and (n and (n-1)=0) then write('yes') else write('no'); end.输入 127 输出 NO 输入 262144 输出 YES 输入 68719476736 输出 YES问题描述:计算机软件版本通常被用来区分某种软件在不同时间的发布。
大部分软件版本号都是用“.”分隔的非负数的序列。
对两个不同的版本A = a1.a2.a3…an和B = b1.b2.b3…bm,如果下面两个条件之一成立,我们认为版本A要比版本B新:1.对某个i,我们有:对所有j < i, ai > bi 和aj = bj;2.n比m大,而且对所有i < m, ai = bi。
(ai和bi都不超过LONGINT)在这个问题里,你要对给定的一组版本号,按照上面的定义从旧到新排序。
输入文件(VERSIONS.IN):输入文件第一行是一个整数N(N<=20),表示要排序的版本数。
接下来的N行每行一个版本号。
每个版本号是长度不超过50的字符串。
输出文件(VERSIONS.OUT):将排好序的结果以每行一个版本号输出。
输入输出样例:VERSIONS.IN43.0.512.42.4.6VERSIONS.OUT12.42.4.63.0.5var n,i:integer;scan:array [1..30] of string;function check(aa,bb:string):boolean;vara,b:longint;i,j:integer;code:integer;beginaa:=aa+'.'; bb:=bb+'.';i:=pos('.',aa); j:=pos('.',bb);while (i>0) and (j>0) do beginval(copy(aa,1,i-1),a,code);val(copy(bb,1,j-1),b,code);if a<b then exit(true);if a>b then exit(false);delete(aa,1,i);delete(bb,1,j);i:=pos('.',aa);j:=pos('.',bb);end;if (i=0) and (j>0) then exit(true) else exit(false); end;procedure qsort(l,r:integer);vari,j:integer;t:string;beginif l>=r then exit;i:=random(r-l)+l;t:=scan[i];scan[i]:=scan[l];i:=l;j:=r;repeatwhile (i<j) and (check(t,scan[j])) do dec(j);if i=j then break; scan[i]:=scan[j];while (i<j) and (check(scan[i],t)) do inc(i);if i=j then break; scan[j]:=scan[i];until i=j;scan[i]:=t;qsort(l,i-1);qsort(i+1,r);end;beginreadln(n);for i:=1 to n do readln(scan[i]); qsort(1,n);for i:=1 to n do writeln(scan[i]); end.输入73.0.5.11.02.22.2.62.2.83.0.5.43.0 输出1.02.22.2.62.2.83.03.0.5.13.0.5.4输入1211.0.21.0.36.23.43.4.222.12.1.43.4.14.24.2.2输出 11.0.21.0.322.12.1.43.43.4.13.4.24.24.2.26.2输入正整数N、M,求N÷M的值。
NOIP2007 提高组 复赛试题
【输出】
输出文件 core.out 只有一个非负整数,为指定意义下的最小偏心距。
【输入输出样例 1】
core.in 5 2 1 2 5 2 3 2 2 4 4 2 5 3 core.out 5
【输入输出样例 2】
core.in 8 6 1 3 2 2 3 2 3 4 6 4 5 3 4 6 4 4 7 2 7 8 3 core.out 5
【输入输出样例 2】
expand.in 2 3 2 a-d-d expand.out aCCCBBBd-d
【输入输出样例 3】
expand.in 3 4 2 di-jkstra2-6 expand.out dijkstra2************6
【限制】
40%的数据满足:字符串长度不超过 5 100%的数据满足:1<=p1<=3, 1<=p2<=8, 1<=p3<=2。字符串长度不超过 100
【输入】
输入文件 game.in 包括 n+1 行: 第 1 行为两个用空格隔开的整数 n 和 m。 第 2~n+1 行为 n*m 矩阵,其中每行有 m 个用单个空格隔开的非负整数。
【输出】
输出文件 game.out 仅包含 1 行,为一个整数,即输入矩阵取数后的最大得分。
【输入输出样例 1】
game.in 2 3 1 2 3 3 4 2 game.out 82
【输入】
输入文件 count.in 包含 n+1 行: 第 1 行是整数 n,表示自然数的个数。 第 2~n+1 行每行一个自然数。
【输出】
输出文件 count.out 包含 m 行(m 为 n 个自然数中不相同数的个数) ,按照自然数从小到大 的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
NOIP2007初赛普及组(C++)
试题部分(普及组 C++语言二小时完成)● ●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共20题,每题1.5分,共计30分。
每题有且仅有一个正确答案.)。
1. 在以下各项中,()不是CPU的组成部分。
A. 控制器B. 运算器C. 寄存器D. 主板2.在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。
A. 二叉树B. 多叉树C.哈希表D.二维表3.在下列各项中,只有()不是计算机存储容量的常用单位。
A. ByteB. KBC.UBD.TB4.ASCII码的含义是()。
A. 二─十进制转换码B. 美国信息交换标准代码C. 数字的二进制编码D. 计算机可处理字符的唯一编码5.一个完整的计算机系统应包括()。
A.系统硬件和系统软件B. 硬件系统和软件系统C. 主机和外部设备D. 主机、键盘、显示器和辅助存储器6. IT的含义是()。
A. 通信技术B. 信息技术C.网络技术D.信息学7.LAN的含义是()。
A. 因特网B. 局域网C.广域网D.城域网8. 冗余数据是指可以由其他数据导出的数据,例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。
冗余数据往往会造成数据的不一致,例如,上面4个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。
下面关于冗余数据的说法中,正确的是()。
A. 应该在数据库中消除一切冗余数据B. 用高级语言编写的数据处理系统,通常比用关系数据库编写的系统更容易消除冗余数据C. 为了提高查询效率,在数据库中可以适当保留一些冗余数据,但更新时要做相容性检验D. 做相容性检验会降低效率,可以不理睬数据库中的冗余数据9.在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有()。
A. gccB. g++C. Turbo CD. free pascal10. 以下断电之后仍能保存数据的有()。
noip普及组复赛入门测试(答案+测试数据)
一、新龟兔赛跑(文件名xgtsp.pas)新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。
由于兔子的坏习惯,它总喜欢把比赛的总时间T小时中的K小时拿来睡觉。
现在给你比赛的总时间T、兔子的睡觉时间K、兔子的速度U、乌龟的速度V,需要你求出该次比赛谁最后获胜。
输入第一行为一个整数X,表示有X组输入数据。
每组数据只有一行,包括4个数T、K、U、V (1 ≤ T≤ 300,0 ≤ K ≤ T,1 ≤ U ≤ 100,1 ≤ V ≤ 100)。
对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。
允许输入一组数后立即输出对应的结果。
样例输入:21 12 16 2 6 3样例输出:1-1varv,u,t,k,n,i:integer;beginreadln(n);for i:=1 to n do beginreadln(t,k,u,v);if v*t>U*(t-k) then writeln(1);if v*t<U*(t-k) then writeln(-1);if v*t=U*(t-k) then writeln(0);end;end.1、输入:26 2 6 28 6 8 2输出:-12、输入:2300 280 60 20120 0 12 13输出:113、输入:3100 20 50 30100 50 45 25100 80 27 17输出:-1114、输入:3150 77 29 23127 11 22 13139 22 13 7输出:1-1-1二、小球路程(文件名:XQLC.PAS )已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,……。
每次弹起的高度都是上一次高度的一半。
求小球第N次反弹起的高度和球在整个过程所经过的路程(包括下落和反弹),用键盘输入N,输出反弹高度和经过路程,结果保留两位小数。
Noip2007、2009普及组复赛答案
Noip2007普及组复赛答案1——奖学金typeaa=recordy,s,w:integer;end;bb=recordf,h:integer;end;var a:array[1..300]of aa;b:array[1..5]of bb;n,i,j,k,t:integer;f:boolean;beginreadln(n);for i:=1 to 5 dowith b[i] do beginf:=0;h:=0;end;for i:=1 to n do beginwith a[i] do read(y,s,w);j:=1;f:=true;t:=a[i].y+a[i].s+a[i].w;while (j<=5)and f do beginif (t>b[j].f)or((t=b[j].f)and(a[i].y>a[b[j].h].y)) then begin for k:=5 downto j+1 do beginb[k].f:=b[k-1].f;b[k].h:=b[k-1].h;end;b[j].f:=t;b[j].h:=i;f:=false;end else if (t=b[j].f)and(a[i].y=a[b[j].h].y) then beginfor k:=5 downto j+2 do beginb[k].f:=b[k-1].f;b[k].h:=b[k-1].h;end;b[j+1].h:=i;b[j+1].f:=t;f:=false;end;j:=j+1;end;for i:=1 to 5 dowith b[i] do writeln(h,' ',f);end.Noip2007普及组复赛答案2——纪念品var a:array[1..30000]of byte;b:array[1..30000]of boolean;w,n,i,zu,k,ma,t:integer;beginreadln(w);readln(n);for i:=1 to 30000 do b[i]:=true;for i:=1 to n do read(a[i]);zu:=0;for i:=1 to n do beginma:=0;t:=0;if b[i] then for k:=i+1 to n doif (a[i]+a[k]<=w)and(a[i]+a[k]>ma)and b[i] and b[k] then begin ma:=a[i]+a[k];t:=k;end;if t<>0 then beginb[i]:=false;b[t]:=false;zu:=zu+1;end;end;for i:=1 to n do if b[i] then zu:=zu+1;writeln(zu);end.Noip2007普及组复赛答案3——守望者的逃离var maxs,mintime,t,m,s,t1,m1,s1:longint;procedure aa(m1,s1,t1:integer);beginif (s1>0)and(t1>0) then begins1:=s1-m1 div 10*60;t1:=t1-m1 div 10;m1:=m1 mod 10;m1:=m1+4;t1:=t1-1;aa(m1,s1,t1);m1:=m1-4;aa(m1,s1,t1);end else beginif maxs<s-s1 then maxs:=s-s1;if (t1>=0)and(mintime>t-t1) then mintime:=t-t1;end;end;beginreadln(m,s,t);maxs:=0;mintime:=2000000;t1:=t;m1:=m;s1:=s;aa(m1,s1,t1);if maxs<s then beginwriteln('No');writeln(maxs);end else beginwriteln('Yes');writeln(mintime);end;end.(pascal语言)Noip2007普及组复赛答案4——Hanoi双塔问题2007年11月21日星期三18:40var a:array[1..62]of integer;i,j,n:integer;f:boolean;beginreadln(n);for i:=2 to 62 do a[i]:=0;a[1]:=2;for i:=2 to n do beginfor j:=1 to 62 doa[j]:=a[j]*2;a[1]:=a[1]+2;for j:=1 to 62 doif a[j]>9 thenbegina[j+1]:=a[j+1]+1;a[j]:=a[j] mod10;end;end;f:=false;for i:=62 downto 1 dobeginif a[i]<>0 thenf:=true;if f then write(a[i]);end;writeln;end.(pascal语言)Noip2007普及组复赛答案4——Hanoi双塔问题2007年11月21日星期三18:40var a:array[1..62]of integer;i,j,n:integer;f:boolean;beginreadln(n);for i:=2 to 62 do a[i]:=0;a[1]:=2;for i:=2 to n do beginfor j:=1 to 62 doa[j]:=a[j]*2;a[1]:=a[1]+2;for j:=1 to 62 doif a[j]>9 thenbegina[j+1]:=a[j+1]+1;a[j]:=a[j] mod10;end;end;f:=false;for i:=62 downto 1 dobeginif a[i]<>0 thenf:=true;if f then write(a[i]);end;writeln;end.问题转述:给出一个一元多项式各项的次数和系数,按照规定的格式要求输出该多项式。
NOIP 2007 普及组 解题报告
NOIP 2007 普及组解题报告By 江苏省赣榆县实验中学初二参赛选手夏雨( 阿洛.c ) 我仅仅想用本文启发一下NOIP2007普及组的同学们,我也不是什么牛,仅仅是意见交流,另:本文供各位路过的牛们鄙视下。
第一题:奖学金【题目描述】:【解题思路】:这一题有很多种做法,包括排序、模拟等等。
现在,介绍一种最优算法,(其实最烂算法也可以全过,数据规模毕竟很小,呵呵)插排(时间复杂度:平均O(N),最坏O(N2),空间复杂度:O(1)。
)思路:1.开一个结构类型(Pascal里是record,C/C++是struct.),包含了学号信息,总分成绩,语文成绩。
或者也可以开三个以下标为关联的一维数组,一次表示上述三个参数。
2.读入。
每当读入一行信息,调用过程insert,从前向后依次寻找,直到寻找到某一记录的总分比当前读入总分小,或其总分和当前读入总分相等且语文成绩比当前总分小,则在当前位置插入所读入的数据。
(这个插入可以是将后面的数据依次向后移动一位,也可以是通过链表的方法实现。
)3.输出,从1至5,输出学号和总分即可。
还有一点要注意的是,当总分相等,且语文成绩也相等的时候,就要将学号小的排在前面。
【解题感想】:对于这种送分题,千万不要辜负出卷人的期望,能拿到的分数就一定要拿到。
否则既对不起老师,也对不起出卷人,更对不起自己。
读题目的时候千万要仔细,我同学就是因为这一题的语文处理有点问题而白白掉了3个点。
第二题奖品分组【题目描述】:【解题思路】:这一题乍一看起来,像是动态规划,很多选手被问题的“最”字迷惑了,拿到题目就开始乐呵呵的DP.殊不知,此题如用动归来做,确实是可以实现的,但编程复杂度很高。
下面介绍一种简单易行的方法:简单哈希表+贪心=哈贪(时间复杂度:平均O(N),最坏O(N2),空间复杂度O(1).)思路:1.开一个a[1..200]的数组作为桶,至于类型Integer足够用了,因为即使最坏情况——所有的数据都在一个桶里,也不过是30000个。
noip2007复赛试题解析
1.统计数字(count.pas/c/cpp)【问题描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。
已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
【输入】输入文件count.in包含n+1行;第一行是整数n,表示自然数的个数;第2~n+1每行一个自然数。
【输出】输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。
每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
【输入输出样例】count.in8242451002100count.out2 34 25 1100 2【限制】40%的数据满足:1<=n<=100080%的数据满足:1<=n<=50000100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)【解题思想1】显然,此题可以用排序的方法来解决,根据n的范围,可以看出,O(nlogn)的算法是可以接受的。
【解题思想2】维护一个二叉树,以数的大小作为节点的权值,以数的重复次数作为节点的附加信息。
之后中序遍历即可。
看起来,树内的节点个数应该不到n,所以可能表现不错,其算法复杂度依然为O(nlogn)【实际数据规模】挺小的,而且也没有传说中的卡Qsort的数据,全部都很温柔。
【分析】这个题目实在不能说是一道TG组的好题。
实际上,个人认为题目最大的意义在于:提供了10个测试排序算法的不怎么特别好的数据。
话说回来,此题是送分题,但是送分题送的这么水,考察的也就只有OIers的细心程度了。
在考试的时候,要相信有简单的题目,要相信有直接的算法。
在我的身边就有几个同学因为这个题目与一等失之交臂,这是最可惜的事情。
var a:array[1..200001] of longint;i,j,k,m,n:longint;procedure qsort(s,t:longint);var i,j,mid,temp:longint;begini:=s;j:=t;mid:=a[(s+t) div 2];while i<=j dobeginwhile a[i]<mid do inc(i);while a[j]>mid do dec(j);if i<=j thenbegintemp:=a[i];a[i]:=a[j];a[j]:=temp;inc(i);dec(j);end;end;if i<t then qsort(i,t);if j>s then qsort(s,j);end;beginreadln(n);for i:=1 to n do readln(a[i]);qsort(1,n);a[n+1]:=maxlongint;k:=1;for i:=2 to n+1 doif a[i]<>a[i-1] thenbegin writeln(a[i-1],' ',k); k:=1;endelse k:=k+1;end.2.字符串的展开(expand.pas/c/cpp)【问题描述】在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。
NOIP2007试题+答案+解析(学生版)
第十三届全国青少年信息学奥林匹克联赛初赛试题(普及组Pascal 语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共20题,每题1.5分,共计30分。
每题有且仅有一个正确答案。
)1.在以下各项中,()不是CPU的组成部分。
A.控制器B.运算器C.寄存器D.主板2.在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。
A.二叉树B.多叉树C.哈希表D.二维表3.在下列各项中,只有()不是计算机存储容量的常用单位。
A.Byte B.KB C.UB D.TB4.ASCII码的含义是()。
A.二→十进制转换码 B.美国信息交换标准代码C.数字的二进制编码D.计算机可处理字符的唯一编码5.一个完整的计算机系统应包括()。
A.系统硬件和系统软件B.硬件系统和软件系统C.主机和外部设备D.主机、键盘、显示器和辅助存储器6.IT的含义是()。
A.通信技术B.信息技术C.网络技术D.信息学7.LAN的含义是()。
A.因特网B.局域网C.广域网D.城域网8.冗余数据是指可以由其它数据导出的数据。
例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。
冗余数据往往会造成数据的不一致。
例如,上面4个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。
下面关于冗余数据的说法中,正确的是()。
A.应该在数据库中消除一切冗余数据B.用高级语言编写的数据处理系统,通常比用关系数据库编写的系统更容易消除冗余数据C.为了提高查询效率,在数据库中可以保留一些冗余数据,但更新时要做相容性检验D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据9.在下列各软件,不属于NOIP竞赛(复赛)推荐使用的语言环境有()。
A.gcc B.g++ C.Turbo C D.Free Pascal10.以下断电后仍能保存数据的有()。
noip普及组复赛答案
noip普及组复赛答案【篇一:noip普及组复赛入门测试(答案+测试数据)】class=txt>新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。
由于兔子的坏习惯,它总喜欢把比赛的总时间t小时中的k小时拿来睡觉。
现在给你比赛的总时间t、兔子的睡觉时间k、兔子的速度u、乌龟的速度v,需要你求出该次比赛谁最后获胜。
输入第一行为一个整数x,表示有x组输入数据。
每组数据只有一行,包括4个数t、k、u、v (1 ≤ t≤ 300,0 ≤ k ≤ t,1 ≤ u ≤ 100,1 ≤ v ≤ 100)。
对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。
允许输入一组数后立即输出对应的结果。
样例输入:21 12 16 2 6 3样例输出:1-1varv,u,t,k,n,i:integer;beginreadln(n);for i:=1 to n do beginreadln(t,k,u,v);if v*tu*(t-k) then writeln(1);if v*tu*(t-k) then writeln(-1);if v*t=u*(t-k) then writeln(0);end;end.1、输入:26 2 6 28 6 8 2输出:-12、输入:2300 280 60 20120 0 12 13输出:113、输入:3100 20 50 30100 50 45 25100 80 27 17输出:-1114、输入:3150 77 29 23127 11 22 13139 22 13 7输出:1-1-1二、小球路程(文件名:xqlc.pas )已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,??。
每次弹起的高度都是上一次高度的一半。
2007年潍坊复赛试题(普及组)
2007年潍坊市青少年信息学奥林匹克竞赛试题(普及组)考生须知:★若试卷中试题字迹不清,考生可以在审题时举手请求解释,由考务人员加以说明。
涉及题意理解问题,则不得提问且考务人员不予解答;★考生必须持准考证对号入座,考试结束前按要求上传到服务器上;★本试卷共四题,满分100分。
★程序名字严格按照试卷要求命名,否则不得分,答题完毕后只上交源程序。
1.文件名:program1.pas/c/cpp (15分;说明:.pas/c/cpp是指,若编程语言为Pascal,则后缀为.pas,语言为C,则后缀为.C,语言为C++,则后缀为.CPP,以下同)【问题描述】输入圆的半径R(1<R≤30000),求圆形的面积(圆周率的值取3.1415926),若存在不符合要求的输入,则输出“input error”。
键盘输入:整数R 屏幕输出:面积S(保留小数点后两位)【样例输入】123【样例输出】47529.151 23 45 62.文件名:program2.pas/c/cpp (20分)【问题描述】转置矩阵是指原矩阵的行列内容互换而成的矩阵。
如矩阵A为,1 3 52 4 6其转置矩阵为。
现有输入文件提供的N×M(0<N≤20,0<M≤20)矩阵(各数据元素为整数),要求输出其转置矩阵。
【输入文件】输入文件program2.in,N+1行M列,第一行为N和M的值,用空格隔开,其余为矩阵的各元素的值【输出文件】输出文件为program2.out,M行N列,为转置矩阵各元素的值【样例输入】3 31 2 34 5 67 8 9【样例输出】1 4 72 5 83 6 93. 文件名:program3.pas/c/cpp (25分)【问题描述】输入一个以“@”结束的字符串,从左至右翻译。
若下一个字符是数字n(0<n≤9),表示后一个字符重复n+1次,不论后一个字符是否为数字;若下一个字符非数字,则表示自己。
历年noip(普及组提高组)试题分析
历年NOIP(普及组)难度分析by Climber.pI年份题目名称考查内容难度1998 Three 枚举☆Factor 高精度运算★Power 数学(进制转换)★★1999 Cantor表模拟或数学★☆回文数字符串处理★★旅行家的预算动态规划或贪心★★☆2000 计算器的改良字符串处理★★税收与补贴问题数学或枚举★★乘积最大动态规划★★★单词接龙回溯★★★★2001 数的计算动态规划★最大公约数和最小公倍数数学(辗转相除法)★求先序排列树的遍历☆装箱问题0/1背包或枚举★2002 级数求和循环结构☆选数生成算法、素数判定★★★产生数简单图论★★★★过河卒递推或动态规划★☆2003 乒乓球字符串处理★☆数字游戏动态规划★★★★★栈数学(卡特兰数)★★麦森数分治、高精度运算★★★2004 不高兴的津津模拟☆花生采摘贪心★FBI树树的遍历★★火星人生成算法★★★2005 淘淘摘苹果模拟☆校门外的树模拟★采药0/1背包★循环高精度运算、数论、快速幂★★★★★2006 明明的随机数冒泡排序(去重)★开心的金明0/1背包★Jam计数法生成算法、字符串★★★数列数学(进制转换)★☆2007 奖学金冒泡排序(双关键字)★纪念品分组贪心、排序算法★☆守望者的逃离动态规划或枚举★★★Hanoi双塔问题数学、高精度★☆2008 ISBN号码字符串处理★排座椅贪心★★传球游戏动态规划★★★立体图字符输出★★★2009 多项式输出字符串处理★分数线划定快速排序(双关键字)★细胞分裂数论★★★★道路游戏动态规划★★★★★2010 数字统计枚举★接水问题模拟★导弹拦截排序+枚举★★★★三国游戏贪心★★★2011 (160)数字反转模拟、字符串★统计单词数模拟、字符串函数★瑞士轮模拟、快排、滚动数组★★★表达式的值栈、表达式计算、递推★★★★★2012 (150)质因数分解枚举★寻宝模拟,模运算★★摆花动态规划★★★★文化之旅搜索、最短路、动规★★★★☆/view/e1cdc430376baf1ffc4fad0c.htmlNOIP提高组复赛考察点详细分析题目编号题目名主考察点知识点系数NOIP-2000-A 进制转换数学初等代数,找规律0.6 NOIP-2000-B 乘积最大动态规划资源分配DP 0.7 NOIP-2000-C 单词接龙搜索DFS,字符串,模拟0.5 NOIP-2000-D 方格取数动态规划多维状态0.6 NOIP-2001-A 一元三次方程求解数学数学,枚举,实数处理0.5 NOIP-2001-B 数的划分动态规划资源分配DP,多维状态DP 0.7 NOIP-2001-C 统计单词个数动态规划资源分配DP,字符串0.3 NOIP-2001-D Car的旅行路线图论最短路,实数处理0.7 NOIP-2002-A 均分纸牌贪心贪心,模拟0.8 NOIP-2002-B 字串变换搜索BFS,字符串0.5 NOIP-2002-C 自由落体数学数学,物理,模拟,实数处理0.6 NOIP-2002-D 矩形覆盖构造动态规划/贪心/搜索剪枝0.2 NOIP-2003-A 神经网络图论拓扑排序,递推0.4 NOIP-2003-B 侦探推理模拟枚举,模拟,字符串0.5 NOIP-2003-C 加分二叉树动态规划树,区间DP 0.4 NOIP-2003-D 传染病控制构造随机贪心/搜索剪枝0.2 NOIP-2004-A 津津的储蓄计划模拟模拟0.9 NOIP-2004-B 合并果子贪心最优哈夫曼树,排序0.7 NOIP-2004-C 合唱队形动态规划子序列DP 0.7 NOIP-2004-D 虫食算搜索搜索剪枝,模拟0.2 NOIP-2005-A 谁拿了最多奖学金模拟模拟,字符串0.8 NOIP-2005-B 过河动态规划子序列DP,贪心优化0.2 NOIP-2005-C 篝火晚会数学置换群,贪心0.2 NOIP-2005-D 等价表达式模拟字符串,抽样检测,表达式0.3 NOIP-2006-A 能量项链动态规划区间环DP 0.6NOIP-2006-B 金明的预算方案动态规划资源分配DP,构造0.6 NOIP-2006-C 作业调度方案模拟模拟0.7 NOIP-2006-D 2^k进制数动态规划动态规划/组合数学,高精度0.5 NOIP-2007-A 统计数字模拟排序 1.0 NOIP-2007-B 字符串的展开模拟字符串,模拟0.7 NOIP-2007-C 矩阵取数游戏动态规划区间DP,高精度0.6 NOIP-2007-D 树网的核图论最短路,树的直径0.4 NOIP-2008-A 笨小猴模拟质数判断,字符串 1.0 NOIP-2008-B 火柴棒等式模拟枚举,优化/开表0.8 NOIP-2008-C 传纸条动态规划多维状态DP 0.7 NOIP-2008-D 双栈排序构造枚举,贪心/二分图0.4 NOIP-2009-A 潜伏者模拟字符串,模拟0.9 NOIP-2009-B Hankson的趣味题数学初等数论,质因数,组合数学0.4 NOIP-2009-C 最优贸易图论最短路0.5 NOIP-2009-D 靶形数独搜索搜索优化0.3 NOIP-2010-A 机器翻译模拟NOIP-2010-B 乌龟棋动态规划动态规划优化NOIP-2010-C 关押罪犯二分答案二分答案或并查集NOIP-2010-D 引水入域广搜+动规判断有解和无解NOIP-2011-D1A 铺地毯枚举,模拟循环队列NOIP-2011-D1B 选择客栈枚举二分查找、NOIP-2011-D1C Mayan游戏深搜剪支NOIP-2011-D2A 计算系数组合二项式系数NOIP-2011-D2B 聪明的质监员二分答案部分和优化NOIP-2011-D2C 观光公交贪心递推分析NOIP-2012-D1A Vigenere密码枚举模拟左偏移位NOIP-2012-D1B 国王游戏贪心排序后列出NOIP-2012-D1C 开车旅行平衡树或链离线深搜,动态规划、倍增NOIP-2012-D2A 同余方程不定方程递归,扩展欧几里得NOIP-2012-D2B 借教室线段树枚举、线段树、二分NOIP-2012-D2C 疫情控制二分答案二分答案,贪心,倍增动态规划:12 模拟:10数学:5 图论:4搜索:4 构造:3贪心:2【动态规划】平均难度系数:0.55此项为历届NOIP考察次数最多的知识点。
信奥赛普及组复赛试卷
信奥赛普及组复赛试卷一、单项选择题(每题2分,共30分)1. 在C++语言中,以下哪个符号用于定义一个整数变量?()A. #B. $.C. int.D. char.2. 一个完整的C++程序必须有()。
A. 预处理命令。
B. 输入输出语句。
C. 主函数。
D. 函数调用。
3. 在C++中,若定义了 `int a = 5;`,表达式 `a++` 的值为()。
A. 5.B. 6.C. 7.D. 8.4. 若有数组定义 `int arr[5] = {1, 2, 3, 4, 5};`,则访问数组元素`arr[3]` 的值为()。
A. 1.B. 2.C. 3.D. 4.5. 在C++中,用于从标准输入读取一个整数的函数是()。
A. scanf.B. cin.C. get.D. read.6. 以下关于函数的说法正确的是()。
A. 函数可以没有返回值。
B. 函数只能有一个参数。
C. 函数内部不能定义变量。
D. 函数名不能以数字开头。
7. 在C++中,若有函数声明 `void fun(int x);`,则函数 `fun` 的参数传递方式是()。
A. 值传递。
B. 地址传递。
C. 引用传递。
D. 指针传递。
8. 若要计算1到100的整数和,以下哪种循环结构最合适?()A. for循环。
B. while循环。
C. do - while循环。
D. 任意一种循环都可以。
9. 在C++中,以下关于字符串的操作正确的是()。
A. 可以直接用 `==` 比较两个字符串是否相等。
B. 字符串是基本数据类型。
C. 可以用 `strcpy` 函数复制字符串。
D. 字符串的长度可以用 `sizeof` 直接获取。
10. 若有结构体定义:cpp.struct Student {int id;char name[20];};定义一个结构体变量 `Student stu;` 后,要给成员变量 `id` 赋值为1001,以下正确的是()。
A. stu - > id = 1001;B. stu.id = 1001;C. (*stu).id = 1001;D. 以上都不对。
NOIP2007试题+答案+解析(学生版)
第十三届全国青少年信息学奥林匹克联赛初赛试题(普及组Pascal 语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共20题,每题1.5分,共计30分。
每题有且仅有一个正确答案。
)1.在以下各项中,()不是CPU的组成部分。
A.控制器B.运算器C.寄存器D.主板2.在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。
A.二叉树B.多叉树C.哈希表D.二维表3.在下列各项中,只有()不是计算机存储容量的常用单位。
A.Byte B.KB C.UB D.TB4.ASCII码的含义是()。
A.二→十进制转换码 B.美国信息交换标准代码C.数字的二进制编码D.计算机可处理字符的唯一编码5.一个完整的计算机系统应包括()。
A.系统硬件和系统软件B.硬件系统和软件系统C.主机和外部设备D.主机、键盘、显示器和辅助存储器6.IT的含义是()。
A.通信技术B.信息技术C.网络技术D.信息学7.LAN的含义是()。
A.因特网B.局域网C.广域网D.城域网8.冗余数据是指可以由其它数据导出的数据。
例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。
冗余数据往往会造成数据的不一致。
例如,上面4个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。
下面关于冗余数据的说法中,正确的是()。
A.应该在数据库中消除一切冗余数据B.用高级语言编写的数据处理系统,通常比用关系数据库编写的系统更容易消除冗余数据C.为了提高查询效率,在数据库中可以保留一些冗余数据,但更新时要做相容性检验D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据9.在下列各软件,不属于NOIP竞赛(复赛)推荐使用的语言环境有()。
A.gcc B.g++ C.Turbo C D.Free Pascal10.以下断电后仍能保存数据的有()。
2007年NOIP普及组初赛试题及参考答案
二、问题解答
1、(子集划分)将 n 个数{1,2,…,n}划分成 r 个子集。每个数都恰好属于 一个子集,任何两个不同的子集没有共同的数,也没有空集。将不同划分方法 的总数记为 S(n,r)。例如,S(4,2)=7,这 7 种不同的划分方法依次 为{(1),(234)}, {(2),(134)}, {(3),(124)}, {(4),(123)}, {(12),(34)}, {(13),(24)}, {(14),(23)}。当 n=6,r=3 时,S(6,3)=_________ 。 (提示:先固定一个数,对于其余的 5 个数考虑 S(5,3)与 S(5,2),再分这两种 情况对原固定的数进行分析)。
一、选择题
11. 在下列关于计算机语言的说法中,正确的有( )。 A. 高级语言比汇编语言更高级,是因为它的程序的运行效率更高 B. 随着 Pascal、C 等高级语言的出现,机器语言和汇编语言已经退 出了历史舞台 C. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种 计算机上
D. C 是一种面向对象的高级计算机语言
│8
一、选择题
8. 冗余数据是指可以由其他数据导出的数据,例如,数据库中已存放了学生的数学、语文和 英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。冗余数据往往 会造成数据的不一致,例如,上面 4 个数据如果都是输入的,由于操作错误使总分不等于三 科成绩之和,就会产生矛盾。下面关于冗余数据的说法中,正确的是( )。 A. 应该在数据库中消除一切冗余数据 B. 用高级语言编写的数据处理系统,通常比用关系数据库编写的系统更容易消除冗余数据 C. 为了提高查询效率,在数据库中可以适当保留一些冗余数据,但更新时要做相容性检验 D. 做相容性检验会降低效率,可以不理睬数据库中的冗余数据
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国信息学奥林匹克联赛(NOIP2007)复赛
普及组
题目一览
(2007年11月17日3小时完成)
说明:
1. 文件名(程序名和输入输出文件名)必须使用小写
2. C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3. 全国统一评测时采用的机器参考配置为:CPU 2.0GHz,内存256M。
1.奖学金
(scholar.pas/c/cpp)
【问题描述】
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。
期末,每个学生都有3门课的成绩:语文、数学、英语。
先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。
注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。
例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:
7 279
5 279
这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。
这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。
如果你的前两名的输出数据是:
5 279
7 279
则按输出错误处理,不能得分。
【输入】
输入文件scholar.in包含n+1行:
第1行为一个正整数n,表示该校参加评选的学生人数。
第2到n+1行,每行有3个用空格隔开的数字,每个数字都在0到100之间。
第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。
每个学生的学号按照输入顺序编号为1~n (恰好是输入数据的行号减1)。
所给的数据都是正确的,不必检验。
【输出】
输出文件scholar.out共有5行,每行是两个用空格隔开的正整数, 依次表示前5名学生的学号和总分。
【限制】
50%的数据满足:各学生的总成绩各不相同100%的数据满足:6<=n<=300
2.纪念品分组
(group.pas/c/cpp)
【题目描述】
元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。
为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。
为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。
你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。
【输入】
输入文件group.in包含n+2行:
第1行包括一个整数w,为每组纪念品价格之和的上限。
第2行为一个整数n,表示购来的纪念品的总件数。
第3~n+2行每行包含一个正整数p i (5 <= p i <= w),表示所对应纪念品的价格。
【输出】
输出文件group.out仅一行,包含一个整数,即最少的分组数目。
【输入输出样例】
【限制】
50%的数据满足:1 <= n <= 15
100%的数据满足:1 <= n <= 30000, 80 <= w <= 200
3.守望者的逃离
(escape.pas/c/cpp)
【问题描述】
恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。
守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。
为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。
到那时,岛上的所有人都会遇难。
守望者的跑步速度为17m/s,以这样的速度是无法逃离荒岛的。
庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。
守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复。
现在已知守望者的魔法初值M,他所在的初始位置与岛的出口之间的距离S,岛沉没的时间T。
你的任务是写一个程序帮助守望者计算如何在最短的时间内逃离荒岛,若不能逃出,则输出守望者在剩下的时间内能走的最远距离。
注意:守望者跑步、闪烁或休息活动均以秒(s)为单位,且每次活动的持续时间为整数秒。
距离的单位为米(m)。
【输入】
输入文件escape.in仅一行,包括空格隔开的三个非负整数M, S, T。
【输出】
输出文件escape.out包含两行:
第1行为字符串“Yes”或“No”(区分大小写),即守望者是否能逃离荒岛。
第2行包含一个整数。
第一行为“Yes”(区分大小写)时表示守望者逃离荒岛的最短时间;第一行为“No”(区分大小写)时表示守望者能走的最远距离。
【限制】
30%的数据满足:1 <= T <= 10, 1 <= S <= 100
50%的数据满足:1 <= T <= 1000, 1 <= S <= 10000
100%的数据满足:1 <= T <= 300000, 0 <= M <= 1000, 1 <= S <= 108.
4.Hanoi双塔问题
(hanoi.pas/c/cpp)
【问题描述】
给定A、B、C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。
现要将这些圆盘移到C柱上,在移动过程中可放在B柱上暂存。
要求:
(1)每次只能移动一个圆盘;
(2)A、B、C三根细柱上的圆盘都要保持上小下大的顺序;
任务:设A n为2n个圆盘完成上述任务所需的最少移动次数,对于输入的n,输出A n。
【输入】
输入文件hanoi.in为一个正整数n,表示在A柱上放有2n个圆盘。
【输出】
输出文件hanoi.out仅一行,包含一个正整数, 为完成上述任务所需的最少移动次数A n。
【限制】
对于50%的数据,1<=n<=25
对于100%的数据,1<=n<=200
【提示】
设法建立A n与A n-1的递推关系式。