(NOIP2011)复赛普及组试题

合集下载

NOIP复赛普及组模拟题2

NOIP复赛普及组模拟题2

输入格式
第一行:两个用空格分开的整数:N和M 第二行到第M + 1行:两个用空格分开的整数表示一条道路连接的两个路口的编号
输出格式
第一行:最拥挤的道路上通过的路径数量 输入样例:
7 7 1 3 3 4 3 5 4 6 2 3 5 6 6 7 输出样例: 4 样例解释:
(最拥挤的道路是(6,7),一共有四条路径: 13467 13567
2.奶牛交通
由于奶牛数量的大膨胀, 牧场里通往牛棚的道路不堪重负,为了缓解在挤奶高峰 时间的交通堵塞,农夫约翰决定找出最拥挤的道路来整治。牧场里有 M (1 ≤ M ≤ 50000)条单行的道路,N (1 ≤ N ≤ 5000)个路口(从 1 到 N 标号) ,每条道 路连接了两个不同的路口。牛棚就在 N 号路口上。.每一条道路都由编号较小的 路口通向编号较大的路口, 所以在道路网络里将不会出现环,而且犹如老话所讲 的那样: “条条道路通牛棚” 。注意同一对路口上可能出现一条以上的道路。在挤 奶的高峰期,一些奶牛会从放牧点走向牛棚。那些只出不进的路口都是放牧点。 一个放牧点连向牛棚的道路序列构成一条路径, 每条路径上都会有一头不同的奶 牛通过。 帮助约翰找到最拥挤的那条道路上通过的奶牛数量。我们保证结果不会 超过一个有符号的 32 位整数。
全国信息学奥林匹克联赛复赛
文件名 输出文件名 提交程序名 每个测试点时限 空间限制 奶牛排名 rank.in rank.out rank.* 1秒 128M 奶牛交通 traffic.in traffic.out traffic.* 1秒 128M crop circles cropcir.in cropcir.out cropcir.* 1秒 128M
享受巧克力
ceating.in ceating.out ceating.* 1秒 128M

NOIP2011普及组解析

NOIP2011普及组解析

第十七届全国青少年信息学奥林匹克联赛初赛试题(普及组 Pascal 语言两小时完成)●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共 20 题,每题 1.5 分,共计 30 分。

每题有且仅有一个正确选项。

)1、在二进制下,1101001 + () = 1110110。

A、1011B、1101C、1010D、1111二进制运算,逢二进一,简单2、字符“0”的 ASCII 码为 48,则字符“9”的 ASCII 码为()。

A、39B、57C、120D、视具体的计算机而定请牢记“0”48,“A”65,“a”973、一片容量为 8GB 的 SD 卡能存储大约()张大小为 2MB 的数码照片。

A、1600B、2000C、4000D、160008G=8*1024MB约为8000MB4、摩尔定律(Moore's law)是由英特尔创始人之一戈登·摩尔(Gordon Moore)提出来的。

根据摩尔定律,在过去几十年以及在可预测的未来几年,单块集成电路的集成度大约每()个月翻一番。

A、1B、6C、18D、36摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的。

其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。

5、无向完全图是图中每对顶点之间都恰有一条边的简单图。

已知无向完全图 G 有 7 个顶点,则它共有()条边。

A、7B、21C、42D、49无向图的顶点数为n,则边数为n(n-1)/26、寄存器是()的重要组成部分。

A、硬盘B、高速缓存C、内存D、中央处理器(CPU)●寄存器是中央处理器内的组成部份。

寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。

在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。

在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

NOIP普及组历届试题分析

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 的值 尽可能小。

NOIP2011普及组复赛(精彩试题+源程序)

NOIP2011普及组复赛(精彩试题+源程序)

NOIP2011 普及组复赛1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。

(参见样例2)【输入】输入文件名为reverse.in。

输入共一行,一个整数N。

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

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

-1,000,000,000≤N≤1,000,000,000。

【解题】这道题非常简单,可以读字符串处理,也可以读数字来处理,只不过要注意符号问题(以及-0,但测试数据没出)。

【法一】字符串处理Var i,l,k:integer;s:string;p:boolean;beginassign(input, 'reverse.in'); reset(input);assign(output, 'reverse.out'); rewrite(output);readln(s);l:=length(s);k:=1;if s[1]='-' thenbeginwrite('-');k:=2;end;p:=true;;for i:=l downto k dobeginif(p)and((s[i]='0')) then continueelsebeginwrite(s[i]);p:=false;;end;end;close(input); close(output);end.【法二】数字处理Var f:integer;n,ans:longint;beginassign(input, 'reverse.in'); reset(input);assign(output, 'reverse.out'); rewrite(output);readln(n);if n<0 thenbeginf:=-1;n:=-n;endelsef:=1;ans:=0;while n<>0 dobeginans:=ans*10+n mod 10;n:=n div 10;end;ans:=ans*f;writeln(ans);close(input); close(output);end.2.统计单词数(stat.pas/c/cpp)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

最新NOIP复赛普及组试题资料

最新NOIP复赛普及组试题资料

全国信息学奥林匹克联赛(NOIP2011)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名三.编译命令(不包含任何优化开关)四.运行内存限制注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、全国统一评测时采用的机器配置为:CPU P4 3.0GHz,内存1G,上述时限以此配置为准。

4、特别提醒:评测在NOI Linux 下进行。

1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

【输入】输入文件名为reverse.in。

输入共1 行,一个整数N。

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

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

【输入输出样例1】【输入输出样例2】【数据范围】-1,000,000,000 ≤ N ≤ 1,000,000,000。

2.统计单词数(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。

注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

【输入】输入文件名为stat.in,2 行。

第1 行为一个字符串,其中只含字母,表示给定单词;第2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

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

NOIP2011普及组复赛试题

NOIP2011普及组复赛试题

1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

【输入】输入文件名为reverse.in。

输入共1行,一个整数N。

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

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

【输入输出样例1】reverse.in reverse.out 123 321【输入输出样例2】Reverse.in reverse.out -380 -83【数据范围】-1,000,000,000≤N≤1,000,000,000。

2.统计单词数(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。

注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

【输入】输入文件名为stat.in,2行。

第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

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

只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。

【输入输出样例1】stat.in stat.out2 0Toto be or not to be is a question【输入输出样例1说明】输出结果表示给定的单词To在文章中出现两次,第一次出现的位置为0。

noip普及组复赛入门测试(答案+测试数据)

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,输出反弹高度和经过路程,结果保留两位小数。

第十一届全国青少年奥林匹克信息学联赛复赛普及组试题

第十一届全国青少年奥林匹克信息学联赛复赛普及组试题

第十一届全国青少年奥林匹克信息学联赛复赛普及组试题及答案陶陶摘苹果(apple.pas/c/cpp)【问题描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。

苹果成熟的时候,陶陶就会跑去摘苹果。

陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。

假设她碰到苹果,苹果就会掉下来。

【输入文件】输入文件apple.in包括两行数据。

第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。

第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

【输出文件】输出文件apple.out包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

【样例输入】100 200 150 140 129 134 167 198 200 111110【样例输出】5[参考程序]题目讲解:简单的循环和文件操作的考察,和去年“不高兴的晶晶”有相似之处,但是比那一道题目简单。

program apple(input,output);varapp:array[1..10] of integer;f1,f2:text;i,j,n:integer;beginassign(f1,'apple.in');assign(f2,'apple.out');reset(f1);rewrite(f2);for i:=1 to 10 do read(f1,app);read(f1,n);j:=0;for i:=1 to 10 doif app<=n+30 then j:=j+1;writeln(f2,j);close(f1);close(f2);end.校门外的树(tree.pas/c/cpp)【问题描述】某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。

2000-2011NOIP普及组试题

2000-2011NOIP普及组试题

【00NOIP普及组】计算器的改良(noip001.pas)【题目描述】NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。

实验室将这个任务交给了一个刚进入的新手ZL 先生。

为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例:4+3x=86a-5+1=2-2a-5+12Y=0ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及十、一、=这三个数学符号(当然,符号“一”既可作减号,也可作负号)。

方程中并没有括号,也没有除号,方程中的字母表示未知数。

【输入】输入一个一元一次方程,可认为输入的一元一次方程均为合法的,且有唯一实数解。

【输出】将解方程的结果(精确至小数点后三位)输出。

【输入样例】6a-5+1=2-2a【输出样例】a=0.750【00NOIP普及组】税收与补贴问题(noip002.pas)【题目描述】每样商品的价格越低,其销量就会相应增大。

现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减。

(我们假设价格及销售量都是整数)对于某些特殊商品,不可能完全由市场去调节其价格。

这时候就需要政府以税收或补贴的方式来控制。

(所谓税收或补贴就是对于每个产品收取或给予生产厂家固定金额的货币)问题求解:你是某家咨询公司的项目经理,现在你已经知道政府对某种商品的预期价格,以及在各种价位上的销售情况。

要求你确定政府对此商品是应收税还是补贴的最少金额(也为整数),才能使商家在这样一种政府预期的价格上,获取相对其他价位上的最大总利润。

总利润=单位商品利润*销量单位商品利润=单位商品价格-单位商品成本(-税金 or +补贴)【输入】输入的第一行为政府对某种商品的预期价,第二行有两个整数,第一个整数为商品成本,第二个整数为以成本价销售时的销售量,以下若干行每行都有两个整数,第一个为某价位时的单价,第二个为此时的销量,以一行-1,-1表示所有已知价位及对应的销量输入完毕,输入的最后一行为一个单独的整数表示在已知的最高单价外每升高一块钱将减少的销量。

NOIP2011复赛题解

NOIP2011复赛题解

NOIP2011复赛题解noip2011普及组解题报告NOIP2011普及组解题报告——ahbbzeq 2011.11.25 转载请注明来源一、数字反转没得满分只能说明一个问题,你的程序写的太少了。

program reverse;vars:string;i,sta:longint;beginassign(input,'reverse.in');reset(input);assign(output,'reverse.out');rewrite(output);readln(i);str(i,s);sta:=1;if s[1]='-' thenbeginwrite('-');sta:=2;end;i:=length(s);while (s[i]='0') and (i>sta) dodec(i);while (i>=sta) dobeginwrite(s[i]);dec(i);end;close(input);close(output);end.二、统计单词个数考你的基本功,和对程序的理解,尤其是细节上的优化。

直接在文章中选出单词,与给定单词长度一致时才比较,函数传参数时也不要传字符串(会很慢的,具体慢多少没试)。

program stat;vars,p:ansistring;i,j,first,num,len,c,k:longint;function cmp(x:longint):boolean;vari:longint;beginfor i:= 1 to c doif s[i]<> p[x+i-1] then exit(false);exit(true);end;beginassign(input,'stat.in');reset(input);assign(output,'stat.out');rewrite(output);readln(s);readln(p);s:=upcase(s);p:=upcase(p);c:=length(s); len:=length(p);i:=1; num:=0; first:=-1;while (s[i]=' ')and (i<=len) do inc(i);while (i<=len) dobeginj:=i+1;while (p[j]<>' ') and (j<=len) doinc(j);if (j-i = c) and cmp(i) thenbeginif first=-1 then first:=i;inc(num);end;i:=j; while (p[i]=' ') and (i<=len) do inc(i); end;if first=-1 thenwriteln(-1)else writeln(num,' ',first-1);close(input);close(output);end.三、瑞士轮实践证明,如果单纯的排序r次,必然结果是超时。

noip普及组复赛答案

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米高度自由下落,落地后反弹起,又落地,又弹起,??。

每次弹起的高度都是上一次高度的一半。

noip普及组复赛模拟试题7(答案)

noip普及组复赛模拟试题7(答案)

【试题描述】给出一个正整数n,然后对n进行一系列处理,处理用以下代码表示:0不做任何处理1对原数加上100,若加上100后大于1000,则再减去1000.2对原数减去100,若减去100后小于0,则再加上2003对原数除2取整4对原数乘4,若乘4之后大于1000,则除以1000取余数。

问题:输入n,k后,将n作为原数(1≤n <1000),k为处理码的十进制表示(1<k ≤30000)。

要求将k化为五进制的数,然后以该五进制数从高位到低位的顺序,分别将每位数字作为处理码对原数按上述规则进行处理,求处理后的结果。

【输入描述】n k (2个整数)【输出描述】处理后的结果【输入样例】33 247【输出样例】28【解题提示】样例说明:k=247 化为五进制数:1442,则处理系列为:133+100=1334133*4=5324 532*4=2128 (除以1000取余数,成为128)2128-100=28所以输出28program ex1764;var n,k,i,t,l:integer;st1,st2:string;beginreadln(n,k);st2:='';repeatt:=k mod 5;str(t,st1);st2:=st1+st2;k:=k div 5;until k=0;l:=length(st2);for i:=1 to l docase st2[i] of'1':begin n:=n+100; if n>1000 then n:=n-1000;end;'2':begin n:=n-100;if n<0 then n:=n+200; end;'3':begin n:=n div 2; end;'4':begin n:=n*4;if n>1000 then n:=n mod 1000;end;end;writeln(n);end.输入56 1249 输出936 输入512 20000 输出612输入1000 30000 输出200Description《贫民窟的百万富翁》获得2009年美国奥斯卡最佳影片,影片的主人公是一个叫贾马尔的小男孩,他在贫民窟长大,后来他参加了一档印度版的《谁想成为百万富翁》电视直播节目,他的特殊成长经历居然使他能够回答这个节目中的每一个问题,最后成功获得百万奖金。

NOIP2011复赛模拟卷(一)

NOIP2011复赛模拟卷(一)

NOIP 2011复赛练习卷(一)1、最优贸易(trade.pas/c/cpp)【问题描述】C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市。

任意两个城市之间最多只有一条道路直接相连。

这m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 1 条。

C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。

但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。

商人阿龙来到 C 国旅游。

当他得知同一种商品在不同城市的价格可能会不同这一信息之后,便决定在旅游的同时,利用商品在不同城市中的差价赚回一点旅费。

设C国n个城市的标号从1~ n,阿龙决定从1号城市出发,并最终在n号城市结束自己的旅行。

在旅游的过程中,任何城市可以重复经过多次,但不要求经过所有n个城市。

阿龙通过这样的贸易方式赚取旅费:他会选择一个经过的城市买入他最喜欢的商品——水晶球,并在之后经过的另一个城市卖出这个水晶球,用赚取的差价当做旅费。

由于阿龙主要是来 C 国旅游,他决定这个贸易只进行最多一次,当然,在赚不到差价的情况下他就无需进行贸易。

假设C国有5个大城市,城市的编号和道路连接情况如下图,单向箭头表示这条道路为单向通行,双向箭头表示这条道路为双向通行。

假设 1~n 号城市的水晶球价格分别为 4,3,5,6,1。

阿龙可以选择如下一条线路:1->2->3->5,并在 2 号城市以 3 的价格买入水晶球,在 3号城市以 5 的价格卖出水晶球,赚取的旅费数为 2。

阿龙也可以选择如下一条线路 1->4->5->4->5,并在第 1 次到达 5 号城市时以1 的价格买入水晶球,在第2 次到达 4 号城市时,以 6 的价格卖出水晶球,赚取的旅费数为 5。

现在给出 n 个城市的水晶球价格、m 条道路的信息(每条道路所连接的两个城市的编号以及该条道路的通行情况)),请你告诉阿龙,他最多能赚取多少旅费。

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

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

机器人深海探测是一个极富挑战性的高技术科学研究项目。

小雪参加了这一项目的研究工作。

潜水机器人可以携带规定有限的能量。

在深海探测过程中,机器人需要消耗一定的能量,但可以在机器人之间通过接触传递能量。

用多个潜水机器人接力潜水可以极大地提高潜水机器人的潜水深度。

现给定2个潜水机器人。

第1个潜水机器人最多可以携带x1单位的能量,每下潜1米需要消耗能量y1单位。

第2个潜水机器人最多可以携带x2单位的能量,每下潜1米需要消耗能量y2单位。

开始时2个潜水机器人均处于同一海平面高度为0,并且每个机器人初始时都携带了规定最多的能量。

计算用这2个机器人进行不返回的接力深海探测可下潜的最大深度。

输入:每行一个整数,依次为x1,x2,y1,y2;输出: 这2个登山机器人可下潜的最大深度,精确到小数点后2位。

例如输入:50500.010.01输出:7500.00var x1,x2,y1,y2,x,y,s:real;beginreadln(x1); readln(x2); readln(y1); readln(y2);s:=0;if (x1/y1)>(x2/y2) thenbeginx:=x1;y:=y1;endelse beginx:=x2;y:=y2;end;repeatx1:=x1-y1;x2:=x2-y2;s:=s+1;until x1+x2<=x;s:=s+x/y;writeln(s:0:2);readln;end.输入:40 0.02↙50 0.01↙输出:6334.00输入25350.150.25输出254.671233211.55.1输出131.002035年,智能机器人在各行各业中的应用已经十分普遍了,毕竟它做事时的精度与力量比一个普通人是强多了。

王涛的运输队里就有一个,是用来装卸货物的。

这天,他们的任务是要把N(2 <= N <= 50 )根废旧的条形钢材运送到钢铁厂重新冶炼。

这些钢材长短不同(有些还特别的长),为了便于运输,只好把它们切割成小段。

noip普及组复赛模拟试题23

noip普及组复赛模拟试题23

281. 小华的寒假作业上,有这样一个趣味填空题:给出用等号连接的两个整数,如“1234=127”。

当然,现在这个等号是不成立的。

题目让你在左边的整数中间某个位置插入一个加号,看有没有可能让等号成立。

以上面的式子为例,如果写成123+4=127,这就可以了。

请你编写一个程序来解决它。

Input 只有那个不相等的式子。

已知,等号两边的整数都不会超过2000000000。

Output 如果存在这样的方案,请输出那个正确的式子。

如果不存在解决方案,请输出“Impossible!”(引号中的部分)。

Sample Input 1234=127Sample Output 123+4=1272. 给若干个字符串,判断该字符串最多重复了几次,比如,给ababab,结果是3,因为ab重复了3次,因为求最多重复了几次,所以结果不是1,在比如abcdabcd 结果是2,abcd结果是1.输入一组字符串,以“。

作为结束标志。

样例输入1aaaaabcd。

样例输出413. 【题目描述】蚊子最近经常做噩梦,然后就会被吓醒。

这可不好。

疯子一直在发愁,然后突然有一天,他发现蚊子其实就是害怕某些事。

如果那些事出现在她的梦里,就会害怕。

我们可以假定那个害怕的事其实是一个字符串。

而她做的梦其实也是一个字符串。

她可以一个晚上一直做梦,所以梦这个字符串会很长,如果其中包含了她所害怕的事情,那么她这天晚上就会害怕。

当然一个害怕的事也可能在这天晚上被她梦到很多遍,当然每个晚上也可能有很多种害怕的事都被梦到。

每个害怕的事都有一定的权值。

而这天晚上如果梦到了某件事,那么这件事所产生的黑暗效果等于这件事的权值乘以这个害怕的事在梦字符串里的开始位置。

如果同样的事梦到了很多遍,那么就重复上面的操作很多遍。

当天晚上的黑暗效果总和等于当天所有害怕的事产生的黑暗效果累加到一起。

现在疯子想知道蚊子这些天来噩梦的黑暗效果总和是多少。

【输入格式】:第1行两个整数N,M代表一共有N天梦和M个害怕的事。

NOIP2011初赛普及组C++题目及答案

NOIP2011初赛普及组C++题目及答案

NOIP2011第十七届信息学奥林匹克竞赛初赛(普及组 C++语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共20题,每题1.5分,共计30分。

每题有且仅有一个正确选项。

)1.在二进制下,1011001 + ()= 1100110。

A.1011 B.1101 C.1010 D.11112.字符“0”的ASCII码为48,则字符“9”的ASCII码为()。

A.39 B.57 C.120 D.视具体的计算机而定3.一片容量为8G的SD卡能储存大约()张大小为2MB的数码照片。

A.1600 B.2000 C.4000 D.160004.摩尔定律(Moore's law)是由英特尔创始人之一戈登·摩尔(Gordon Moor)提出来的。

根据摩尔定律,在过去几十年一级在可预测的未来纪念,单块集成电驴的集成度大约每()个月翻一番。

A.1 B.6C.18 D.365.无向完全图是图中每对顶点之间都恰好有一条边的简单图。

已知无向完全图G有7个顶点,则它共有()条边。

A.7 B.21 C.42 D.496.寄存器是()的重要组成部分。

A.硬盘B.高速缓存C.内存D.中央处理器(CPU)7.如果根结点的深度记为1,则一棵恰有2011个叶结点的二叉树的深度最少是()。

A.10 B.11 C.12 D.138.体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。

每个同学按顺序来到操场时,都从排尾走到排头,找到第一个比自己高的同学,并站在他的后面。

这种站队的方法类似于()算法。

A.快速排序B.插入排序C.冒泡排序D.归并排序9.一个正整数在二进制下有100位,则它在十六进制下有()位。

A.7 B.13 C.25 D.不能确定10.有人认为,在个人电脑送修前,将文件放入回收站中就是已经将其删除了。

这种想法是()。

A.正确的,将文件放入回收站以为着彻底删除、无法恢复B.不正确的,只有将回收站清空后,才意味着彻底删除、无法恢复C.不正确的,即使回收站清空,文件只是被标记为删除,仍可能通过回复软件找回D.不正确的,只要在硬盘上出现过的文件,永远不可能被彻底删除11.广度优先搜索时,需要用到的数据结构是()。

信奥赛普及组复赛试卷

信奥赛普及组复赛试卷

信奥赛普及组复赛试卷一、单项选择题(每题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. 以上都不对。

NOIP2011第十七届初赛C++普及组试题与答案(Word精排版)

NOIP2011第十七届初赛C++普及组试题与答案(Word精排版)

第十七届全国青少年信息学奥林匹克联赛初赛试题(普及组 C++ 语言两小时完成)●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共 20 题,每题 1.5 分,共计 30 分。

每题有且仅有一个正确选项。

)1、在二进制下,1101001 + () = 1110110。

A、1011B、1101C、1010D、11112、字符“0”的 ASCII 码为 48,则字符“9”的 ASCII 码为()。

A、39B、57C、120D、视具体的计算机而定3、一片容量为 8GB 的 SD 卡能存储大约()张大小为 2MB 的数码照片。

A、1600B、2000C、4000D、160004、摩尔定律(Moore's law)是由英特尔创始人之一戈登·摩尔(Gordon Moore)提出来的。

根据摩尔定律,在过去几十年以及在可预测的未来几年,单块集成电路的集成度大约每()个月翻一番。

A、1B、6C、18D、365、无向完全图是图中每对顶点之间都恰有一条边的简单图。

已知无向完全图 G 有 7 个顶点,则它共有()条边。

A、7B、21C、42D、496、寄存器是()的重要组成部分。

A、硬盘B、高速缓存C、内存D、中央处理器(CPU)7、如果根结点的深度记为 1,则一棵恰有 2011 个叶结点的二叉树的深度最少是()。

A、10B、11C、12D、138、体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。

每个同学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站在他的后面。

这种站队的方法类似于()算法。

A、快速排序B、插入排序C、冒泡排序D、归并排序9、一个正整数在二进制下有 100 位,则它在十六进制下有()位。

A、7B、13C、25D、不能确定10、有人认为,在个人电脑送修前,将文件放入回收站中就是已经将其删除了。

这种想法是()。

A、正确的,将文件放入回收站意味着彻底删除、无法恢复B、不正确的,只有将回收站清空后,才意味着彻底删除、无法恢复C、不正确的,即使将回收站清空,文件只是被标记为删除,仍可能通过恢复软件找回D、不正确的,只要在硬盘上出现过的文件,永远不可能被彻底删除11、广度优先搜索时,需要用到的数据结构是()。

NOIP2011复赛模拟01

NOIP2011复赛模拟01

1、校验和(checksum.cpp)【问题描述】在信息传输中,有许多种检验方式。

下面介绍一种比较简单的检验方式:假定传输的信息全部由大写字母和空格组成,并由大写字母开始和结束;大写字母编号为字母顺序:A=1,B=2,…,Z=26,空格的编号为0;校验和即为对应位置上的字符编号乘以位置之积的和。

注意空格也占用位置。

如ACM:1*1+2*3+3*13 = 46;MID CENTRAL: 1*13+2*9+3*4+4*0+5*3+6*5+7*14+8*20+9*18+ 10*1+11*12 = 650。

【输入格式】第一行为正整数t(≤1000),表示测试数据组数;接下来每行为一个信息字符串,仅由大写字母和空格组成,其长度不超过300。

【输出格式】对于每行信息,输出其校验和。

【输入输出样例】2、危险的民主(danger.cpp)【问题描述】在全民选举中,投票者被分成K个组,如果超过半数的组投赞成票,决议就可以通过。

每组是投赞成票还是反对票也由每组内部投票决定,若这一组有超过半数的人投赞成票,那么这一组就投赞成票。

例如有3组,分别有5,5,7人,那么,至少要有6个人赞成决议才能通过。

(即第一组和第二组各三人。

)注意到共有17人,只需要6人赞成就有可能通过,所以本题题目叫“危险的民主”已知组数和每组的人数,计算通过决议至少需要多少人赞成。

【输入格式】第一行是组数K(≤10001);第二行有K个数,分别是每一组的人数。

其中K以及每组的人数都是奇数,总人数不会超过108。

【输出格式】输出至少需要投赞成票的人数。

【输入输出样例】3、整除性问题(factorial.cpp)【问题描述】输入m和n,判断n是否能被m!整除。

【输入格式】第一行是正整数t(≤10),表示数据组数。

接下来t行,每行两个正整数m 和n(m,n≤2*109)。

【输出格式】对于每一组数据,输出“yes”或“no”表示n是否整除m!。

【输入输出样例】4、等差序列(sequence.cpp)【问题描述】输入一个非负整数的非递减序列,求其中成等差序列的子序列的个数。

NOIP普及组复赛考试

NOIP普及组复赛考试

NOIP普及组复赛考试————————————————————————————————作者:————————————————————————————————日期:P1909 买铅笔题目描述P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。

她发现商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。

为了公平起见,P老师决定只买同一种包装的铅笔。

商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。

现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔*最少*需要花费多少钱。

输入输出格式输入格式:输入的第一行包含一个正整数n,表示需要的铅笔数量。

接下来三行,每行用两个正整数描述一种包装的铅笔:其中第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价格。

保证所有的7个数都是不超过10000的正整数。

输出格式:输出一行一个整数,表示P老师最少需要花费的钱。

输入输出样例输入样例#1:572 250 3030 27输出样例#1:54输入样例#2:9998128 233128 2333128 666输出样例#2:18407输入样例#3:9999101 11111 99991111 9999输出样例#3:89991说明铅笔的三种包装分别是:•2支装,价格为2;•50支装,价格为30;•30支装,价格为27。

P老师需要购买至少57支铅笔。

如果她选择购买第一种包装,那么她需要购买29份,共计2x29 = 58支,需要花费的钱为2x29 = 58。

实际上,P老师会选择购买第三种包装,这样需要买2份。

虽然最后买到的铅笔数量更多了,为30x2 = 60支,但花费却减少为27 x2 = 54,比第一种少。

对于第二种包装,虽然每支铅笔的价格是最低的,但要够发必须买2份,实际的花费达到了30 x 2 = 60,因此P老师也不会选择。

所以最后输出的答案是54。

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

四.运行内存限制
内存上限
128M 128M 128M 128M
全国信息学奥林匹克联赛(NOIP2011)复赛普及组
1.数字反转
(reverse.cpp/c/pas)
【问题描述】
给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

【输入】输入文件名为reverse.in。

输入共1行,一个整数N。

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

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

【输入输出样例1】
reverse.in reverse.out
123 321
【输入输出样例2】
Reverse.in reverse.out
-380 -83
【数据范围】
-1,000,000,000 ≤ N ≤ 1,000,000,000。

2.统计单词数
(stat.cpp/c/pas)
【问题描述】
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和
第一次出现的位置。

注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

【输入】
输入文件名为stat.in,2行。

第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

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

只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。

【输入输出样例1】
stat.in stat.out
To
to be or not to be is a question
2 0
【输入输出样例1说明】
输出结果表示给定的单词To在文章中出现两次,第一次出现的位置为0。

【输入输出样例2】
stat.in stat.out to
Did the Ottoman Empire lose its power at that time
-1
【输入输出样例2说明】
表示给定的单词to在文章中没有出现,输出整数-1。

【数据范围】
1 ≤单词长度≤ 10。

1 ≤文章长度≤ 1,000,000。

3.瑞士轮
(swiss.cpp/c/pas)
【背景】
在双人对决的竞技性比赛,如乒乓球、羽毛球、国际象棋中,最常见的赛制是淘汰赛和循环赛。

前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高。

后者的特点是较为公平,偶然性较低,但比赛过程往往十分冗长。

本题中介绍的瑞士轮赛制,因最早使用于1895年在瑞士举办的国际象棋比赛而得名。

它可以看作是淘汰赛与循环赛的折衷,既保证了比赛的稳定性,又能使赛程不至于过长。

【问题描述】
2*N名编号为1~2N的选手共进行R轮比赛。

每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名。

选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和。

总分相同的,约定编号较小的选手排名靠前。

每轮比赛的对阵安排与该轮比赛开始前的排名有关:第1名和第2名、第3名和第4名、……、第2K – 1名和第2K名、……、第2N – 1名和第2N名,各进行一场比赛。

每场比赛胜者得1分,负者得0分。

也就是说除了首轮以外,其它轮比赛的安排均不能事先确定,而是要取决于选手在之前比赛中的表现。

现给定每个选手的初始分数及其实力值,试计算在R轮比赛过后,排名第Q的选手编号是多少。

我们假设选手的实力值两两不同,且每场比赛中实力值较高的总能获胜。

【输入】
输入文件名为swiss.in。

输入的第一行是三个正整数N、R、Q,每两个数之间用一个空格隔开,表示有2*N名选手、R轮比赛,以及我们关心的名次Q。

第二行是2*N个非负整数s1, s2, …, s2N,每两个数之间用一个空格隔开,其中si表示编号为i的选手的初始分数。

第三行是2*N个正整数w1, w2, …, w2N,每两个数之间用一个空格隔开,其中wi表示编号为i的选手的实力值。

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

输出只有一行,包含一个整数,即R轮比赛结束后,排名第Q的选手的编号。

【输入输出样例】swiss.in swiss.out
2 4 2 1
7 6 6 7
10 5 20 15
【输入输出样例说明】
本轮对阵本轮结束后的得分选手编号/ ①



初始
/ 7 6 6 7

1轮
①—④
②—③
7 6 7 8

2轮
④—①
③—②
7 6 8 9

3轮
④—③
①—②
8 6 9 9

4轮
③—④
①—②9 6 10 9
【数据范围】
对于
30%的数据,
1 ≤ N ≤ 100;
对于
50%的数据,
1 ≤ N ≤ 10,000;
对于
100%的数据,
1 ≤ N ≤ 100,000,1 ≤ R ≤ 50,1 ≤ Q ≤ 2N,0 ≤ s1, s2, …, s2N ≤ 100000000,1 ≤ w1, w2, …, w2N ≤ 100000000。

4.表达式的值
(exp.cpp/c/pas)
【问题描述】
对于1位二进制变量定义两种运算:
运算符运算规则
0⊕0=0

0⊕1=1
1⊕0=1
1⊕1=1
×
0=0
×
×
1=0
1
×
0=0
1
×
1=1
运算的优先级是:
1.
先计算括号内的,再计算括号外的。

2.
―×‖运算优先于― ⊕‖运算,即计算表达式时,先计算×运算,再计算⊕运算。

例如:计算表达式A⊕B × C时,先计算 B × C,其结果再与A做⊕运算。

现给定一个未完成的表达式,例如_+(_*_),请你在横线处填入数字0或者1,请问
有多少种填法可以使得表达式的值为0。

【输入】
输入文件名为exp.in,共2行。

第1行为一个整数L,表示给定的表达式中除去横线外的运算符和括号的个数。

第2行为一个字符串包含L个字符,其中只包含’(’、’)’、’+’、’*’这4种字符,其中’(’、’)’是左右括号,’+’、’*’分别表示前面定义的运算符― ⊕‖和―×‖。

这行字符按顺序给出了给定表达式中除去变量外的运算符和括号。

【输出】
输出文件exp.out共1行。

包含一个整数,即所有的方案数。

注意:这个数可能会很大,请输出方案数对10007取模后的结果。

【输入输出样例1】
exp.in exp.out
4 +(*) 3
【输入输出样例说明】
给定的表达式包括横线字符之后为:_+(_*_)
在横线位置填入(0、0、0)、(0、1、0)、(0、0、1)时,表达式的值均为0,所以共有3种填法。

【数据范围】
对于20%的数据有0 ≤ L ≤ 10。

对于50%的数据有0 ≤ L ≤ 1,000。

对于70%的数据有0 ≤ L ≤ 10,000。

对于100%的数据有0 ≤ L ≤ 100,000。

对于50%的数据输入表达式中不含括号。

相关文档
最新文档