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
NOIP复赛模拟题

NOIP2006复赛模拟题(普及组水平)(时间:3小时)注意事项:1. 严格按照题目所要求的格式进行输入、输出。
2. 题目测试数据有严格的时间,超时不得分。
所有题目的时限均为1秒。
3. 输入文件格式不用判错。
程序文件名、输入输出文件名等请严格按照要求。
4. 本次比赛共4题。
5. 同时提交pas、exe文件,请使用freepascal编译。
编译后的exe请留意是否能正确运行。
为方便测试,所有pas、exe均存在一个文件夹中,该文件夹用你的中文名字命名,然后把整个文件夹压缩为一个rar文件(该文件也是用你的中文名字命名)提交到老师邮箱:*************。
第一题位置(posi.pas)求数A在数组B中的位置.输入及格式:第一行是数A ,一维数组B的元素个数N(N<=105),中间用空格隔开。
第二行是已按升序排列的一维数组B (-32768<B[i],A<32767),数间用空格隔开。
输出及格式:数A在B中的下标。
B中如果存在多个A,则输出下标最小的一个。
如果B 中不存在A,则输出“-1”输入样例1:3 61 3 3 4 5 10输出样例1:2输入样例2:1 33 4 5输出样例2:-1第二题面积(area.pas)一幅图由0和*组成,编程计算由“*”号所围成的图形的面积。
面积是指*号所围成的闭合曲线中0的数目。
输入:由0,*组成的图输出:面积数输入样例:0000000000000**000000*00*0000*000*00000***000000000000输出样例:5输入样例2:000000000000*000*0*0输出样例2:第三题阶乘位数(jc.pas)问题描述:在很多软件中需要用到较大的整数。
比如一些软件将大数用于数据安全传送的密匙或者密码编译等等。
在这个问题中,你要根据给你的整数,算出这个数的阶乘的位数。
输入格式:输入文件包含若干行整数。
第一行为n,表示有n组数据,接下来是n行,每行一个整数m(1≤m≤107)。
乌龟棋 (NOIP2010)复赛 提高组 试题二 解题代码

乌龟棋(NOIP2010)复赛提高组试题二解题代码分类:C/C++解题代码2011-07-23 18:56 271人阅读评论(2) 收藏举报view plaincopy to clipboardprint?1. /*2. 全国信息学奥林匹克联赛(NOIP2010)复赛提高组第二题3. 【问题描述】4. 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。
5. 乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数)。
棋盘第1 格是唯一6. 的起点,第N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。
7. ……8. 1 2 3 4 5 …… N9. 乌龟棋中M 张爬行卡片,分成4 种不同的类型(M 张卡片中不一定包含所有4 种类型10. 的卡片,见样例),每种类型的卡片上分别标有1、2、3、4 四个数字之一,表示使用这种卡11. 片后,乌龟棋子将向前爬行相应的格子数。
游戏中,玩家每次需要从所有的爬行卡片中选择12. 一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数,每张卡片只能使用一次。
13. 游戏中,乌龟棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格子,就得到14. 该格子相应的分数。
玩家最终游戏得分就是乌龟棋子从起点到终点过程中到过的所有格子的15. 分数总和。
16. 很明显,用不同的爬行卡片使用顺序会使得最终游戏的得分不同,小明想要找到一种卡17. 片使用顺序使得最终游戏得分最多。
18. 现在,告诉你棋盘上每个格子的分数和所有的爬行卡片,你能告诉小明,他最多能得到19. 多少分吗?20. 【输入】21. 输入文件名tortoise.in。
输入文件的每行中两个数之间用一个空格隔开。
22. 第1 行2 个正整数N 和M,分别表示棋盘格子数和爬行卡片数。
23. 第2 行N 个非负整数,a1, a2, ……, aN,其中ai 表示棋盘第i 个格子上的分数。
24. 第3 行M 个整数,b1,b2, ……, bM,表示M 张爬行卡片上的数字。
NOIP提高组复赛题目

第一题题库NOIP20071.统计数字(count.pas/c/cpp)【问题描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。
已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
【输入】输入文件count.in包含n+1行:第1行是整数n,表示自然数的个数。
第2~n+1行每行一个自然数。
【输出】输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。
每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
【输入输出样例】【限制】40%的数据满足:1<=n <=100080%的数据满足:1<=n <=50000100%的数据满足:1<=n <=200000,每个数均不超过1 500 000 000(1.5*109)NOIP20081. 笨小猴(wird.pas/c/cpp)【问题描述】笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。
但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn 是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn 是一个质数,那么笨小猴就认为这是个Lucky Word ,这样的单词很可能就是正确的答案。
【输入】输入文件word.in 只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
【输出】输出文件word.out 共两行,第一行是一个字符串,假设输入的的单词是Lucky Word ,那么输出“Lucky Word ”,否则输出“No Answer ”;第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn 的值,否则输出0。
noip普及组复赛试题及答案

noip普及组复赛试题及答案一、选择题1. 在计算机科学中,以下哪个概念与数据结构最相关?A. 算法B. 操作系统C. 网络协议D. 编译原理答案:A2. 以下哪种排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序答案:D3. 在C++中,以下哪个关键字用于定义类?A. structB. unionC. enumD. typedef答案:A4. 以下哪个选项不是数据库管理系统(DBMS)的特性?A. 数据持久性B. 数据共享C. 数据加密D. 数据独立性答案:C5. 在计算机网络中,TCP和UDP协议分别属于哪一层?A. 传输层B. 应用层C. 网络层D. 物理层答案:A二、填空题1. 在计算机程序中,______ 用于定义数据的存储方式和组织形式。
答案:数据结构2. 一个算法的时间复杂度为O(1),表示该算法的执行时间与输入数据的规模______。
答案:无关3. 在C++中,______ 是一种特殊的类,它提供了一种方式来定义数据类型。
答案:typedef4. 数据库管理系统(DBMS)通常包含数据定义语言(DDL)、数据操纵语言(DML)和______。
答案:数据控制语言(DCL)5. 在计算机网络中,______ 协议负责在网络层进行数据包的路由选择。
答案:IP三、简答题1. 请简述面向对象编程(OOP)的三个基本特征。
答案:封装、继承、多态2. 描述二分查找算法的基本步骤。
答案:二分查找算法的基本步骤包括:首先确定数组是有序的,然后取中间元素与目标值比较,如果中间元素等于目标值,则查找成功;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找,直到找到目标值或查找范围为空。
四、编程题1. 编写一个函数,实现对整数数组的排序。
答案:以下是一个简单的冒泡排序算法实现:```cppvoid bubbleSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {for (int j = 0; j < n-i-1; j++) {if (arr[j] > arr[j+1]) {swap(arr[j], arr[j+1]);}}}}```2. 编写一个函数,实现计算一个整数的阶乘。
NOIP提高组复赛题解

样例 输入: 33 039 285 570 输出: 34 数据规模: 30%的数据满足:1<=m,n<=10 100%的数据满足:1<=m,n<=50
思路: 首先想到搜索,但是对于只考虑一条路线来说, 每一步有两种状态 一共要走m+n步,搜索整棵树的 时间复杂度为O(2^(m+n)),如果两条路线都考虑的 话,时间复杂度为O(4^(m+n)),即使是30%的数据, 即m+n=20,4^20≈10^12,这样的数据规模也还是太 大了。
4维动态规划 本题可以使用动态规划法解决。 设f[i,j,k,l]为第一条线走到(I,j),第二条线走到 (k,l)时的最优值(方便起见,两条线都看作从左上角 开始,右下角结束)。 动态转移方程: f[i-1,j,k-1,l] (i>1) f[i,j,k,l]=min f[i-1,j,k,l-1] (i>1) +s[i,j]+s[k,l] f[i,j-1,k-1,l] (j>1)且(k>i+1) f[I,j-1,k,j-1] (j>1) 同时,由于两条线不能交叉,有k>i。
输入格式: 输入文件matches.in共一行,有一个整数n(n<=24)。 * 输出格式: 输出文件matches.out共一行,表示能拼成的不同等 式的数目。
样例1 输入:
14 输出: 2 解释: 2个等式为0+1=1和1+0=1。
样例2 输入: 18 输出: 9 解释: 9个等式为: 0+4=4、0+11=11、1+10=11、2+2=4、 2+7=9、4+0=4、7+2=9、10+1=11、11+0=11
NOIP 2016 提高组 复赛 Day2

第22届全国青少年信息学奥林匹克联赛CCF-NOIP-2016提高组(复赛)第二试竞赛时间:2016年11月20日8:30 ∼12:00提交源程序文件名编译选项注意事项:1.文件名(程序名和输入输出文件名)必须使用英文小写。
2.除非特殊说明,结果比较方式均为忽略行末空格及文末回车的全文比较。
3.C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
4.全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz,内存4G,上述时限以此配置为准。
5.只提供Linux格式附加样例文件。
6.评测在NOI Linux下进行。
7.编译时不打开任何优化选项。
nnii2组合数问题(problem )【问题描述】组合数 C m 表示的是从 n 个物品中选出 m 个物品的方案数。
举个例子,从 (1, 2, 3) 三个物品中选择两个物品可以有 (1, 2), (1, 3), (2, 3) 这三种选择方法。
根据组合数的定义,我们可以给出计算组合数 C m 的一般公式:C m = n !其中 n ! = 1 × 2 × · · · × n 。
nm !(n − m )!小葱想知道如果给定 n , m 和 k ,对于所有的 0 ≤ i ≤ n , 0 ≤ j ≤ min (i , m ) 有多少对(i , j ) 满足 C j是 k 的倍数。
【输入格式】从文件problem.in 中读入数据。
第一行有两个整数 t , k ,其中 t 代表该测试点总共有多少组测试数据, k 的意义见 【问题描述】。
接下来 t 行匈行两个整数 n , m ,其中 n , m 的意义见【问题描述】。
【输出格式】输出到文件problem.out 中。
t 行,匈行一个整数代表所有的 0 ≤ i ≤ n , 0 ≤ j ≤ min (i , m ) 中有多少对 (i , j ) 满足C j是 k 的倍数。
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,输出反弹高度和经过路程,结果保留两位小数。
NOIP复赛模拟题

模拟题11. 1.分数(mark.cpp)高考分数刚刚公布.共有n人参加考试,为了便于填报志愿,教育部把所有考生的成绩平均分为m档.保证n是m的倍数.考试成绩名次在(k-1)*(n/m)+1名到k*(n/m)名的考生被分在第k档(k=1,2,3…..m).并列第i名的所有考生都算第i名.小Y刚参加完高考,迫切想知道自己被分在第几档,你能帮助他吗?输入格式:第一行两个整数n,m<=1000,保证n是m的倍数.接下来n行,每行一个整数ai表示第i 个考生的成绩.最后一行,一个整数x,1<=x<=n,表示询问第i 个考生被分在哪一档.输出格式:一行一个数,表示被分在哪一档.输入输出样例:mark.in3 36326516243mark.out32. 2.背单词(words.cpp)英语四级考试临近了,小Y却发现他已经把以前学的单词几乎忘光了.好在现在离考试还有一段时间.小Y决定从现在开始夜以继日地背单词,也就是一天24小时地背. 今天的日期(时间)是yyyy年mm月dd日hh时min分.这之间的所有时间小Y都用来背单词了,那么考试之前他最多能背多少个单词呢?时间紧张,小Y只管数量不管质量.当然有的单词长一些,有的单词短一些.长单词难背一些,短的单词好背一些.根据小Y的经验,他能一眼看出背某一个单词需要的时间,以分钟记. 现在给你一个字典,请你挑出最多的单词使小Y能在考前背出来.输入格式:第一行一个整数n,表示字典中的单词数,n<=5000.接下来n行,每行一个整数表示背这个单词需要的时间,以分钟记.小于等于10000,(这个单词本身是什么并不重要)接下来两行依次是当前时间和考试时间.时间给出的格式是:yyyy-mm-dd-min.例如:2010-04-22-02:00,采用24小时制,每天从00:00-23:59.年份从0000到9999.输出格式:一行,一个数,表示考前小Y最多能背出的单词数.输入输出样例:words.in2112007-06-23-11:592007-06-23-12:00words.out13溶液模拟器(simulator.cpp)小Y到网上下载了一个溶液配置模拟器。
2014noip复赛模拟练习2(答案)

1.某监狱里有个很长的走廊,走廊中一个接一个地有N个房间。
每个房间中锁着一个犯人。
一天夜里,狱警决定玩一个无聊游戏。
第1轮中,他喝了一口威士忌,然后打开每个房间。
第2轮,他喝了一口威士忌,然后按2的倍数遍历每个房间。
第3轮,他又喝了一口威士忌,然后遍历所有3的倍数的房间。
依次类推。
在遍历中,如果房间是锁着的,则打开;否则锁上。
他这样重复N轮,最终醉酒。
这时有些囚犯看到自己房间的锁被打开了,他们立即逃跑。
对于有N个房间的走廊,最终会有多少囚犯逃脱?输入:输入数据的第一行中有一个整数,表示有多少组测试数据。
接下来的若干行每行包含一个值为5-100的整数,这是房间的数目。
输出:对应输入数据输出多行,每行一个整数,表示逃脱的囚犯数量。
样例输入:25100样例输出:210var n,num,s,m,i,k,j:integer;a:array[0..200]of boolean;begin readln(num);for i:=1 to num dobegin readln(n);fillchar(a,sizeof(a),true);for j:=1 to n dofor k:=1 to n doif k mod j=0 then a[k]:=not a[k];s:=0;for j:=1 to n doif a[j]=false then inc(s);writeln(s);end;end. 输入3 10 35 50输出3 5 7输入3 22 68 99 输出 4 8 9输入5 10 30 60 85 100 输出 3 5 7 9 10一个自然数,若它的素因数至少是两重的(相同的素因数至少个数为二个,如:24=2*2*2*3,则称该数为“漂亮数”。
若相邻的两个自然数都是“漂亮数”,就称它们为“孪生漂亮数”,例如8和9就是一对“孪生漂亮数”。
输入X,Y,编程找出[X,Y]之间的所有“孪生漂亮数”。
如输入2 25,则输出8 924 25var i,n,a,t,x,y,s:longint; f :boolean;begin readln(x,y);a:=x;repeata:=a+1;n:=a;f:=false; i:= 2 ;while n >= i do begint:=0;while n mod i = 0 do begint:=t+1;n := n div i;end;if t>=2 then f:=true;i := i+1;end;if f then beginn:=a+1;f:=false; i:= 2 ;while n >= i do begint:=0;while n mod i = 0 do begint:=t+1;n := n div i;end;if t>=2 then f:=true;i := i+1;end; end;if f then begin s:=s+1; writeln(a,’‘,a+1);end;until a=y;readln;end.输入50 120输出63 64 75 76 80 81 98 99 99 100 116 117 120 121 输入354 480 输出360 361 363 364 368 369 。
2118 NOIP复赛模拟题(六)[第2题]treecut
![2118 NOIP复赛模拟题(六)[第2题]treecut](https://img.taocdn.com/s3/m/65acd0fb710abb68a98271fe910ef12d2af9a9e7.png)
2118 NOIP复赛模拟题(六)[第2题]treecut2118-noip复赛模拟题(六)[第2题]treecut[noip半决赛模拟问题(6)][问题2]特雷科特timelimit:1000msmemorylimit:65536k总计提交:2接受:1descriptiontreecut(treecut.pas\\c\\cpp)【题目描述】有一棵无根树,有n个节点,每个节点的数量为1 n。
现在需要删除其中一个点,以便分割连接块中的节点数量不超过原始节点的一半。
input第一行的输入文件treecut:一个整数n。
后面有n-1行:每行两个整数x和y,表示一个边连接的两个节点号。
输出输出文件treecut.out输出所有可能选择的点。
如果有多个节点,按编号从小到大输出,每个一行。
如果找不到这样的点,输出一行:\样本输入101223344567788991038采样输出38暗示【样例说明】如果删除节点3或8,分支最多可以有5个节点【数据范围】1<=n<=10000source解决方案:从上往下的搜索树,只需搜索每一枝的树枝然后合并到父节点,这样就可以知道每个分支是否超过n\\2,以及父节点是否也超过n\\2程序:Typenode=record//array模拟指针的链表节点V,next:integer;终止varn,i,a,b,pi:integer;p:oftnode的数组[1..20010];//Link:整数的数组[1..10010],与链表的头“指针”相邻c:array[1..10010]ofinteger;//以i为根的子树中的节点数为c[i]ok:array[1..10010]ofboolean;//是否为分割点程序化;procedureins(vara,b:integer);begin//B节点插入到A的链接列表中p[pi].v:=b;p[pi].next:=link[a];link[a]:=pi;inc(pi);end;beginreadln(n);fori:=1tondobeginlink[i]:=0;c[i]:=0;终止pi:=1;fori:=1ton-1dobegin//读入无向边,插入邻接链表readln(a,b);ins(a,b);ins(b,a);终止终止functiondfs(root:integer):integer;varp1,a:integer;beginc[根]:=1;//节点计数,这也可以防止向上递归。
NOIP2005提高组复赛第二题_过河分析

过河【问题描述】在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。
在桥上有一些石子,青蛙很讨厌踩在这些石子上。
由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L (其中L 是桥的长度)。
坐标为0的点表示桥的起点,坐标为L 的点表示桥的终点。
青蛙从桥的起点开始,不停的向终点方向跳跃。
一次跳跃的距离是S 到T 之间的任意正整数(包括S,T )。
当青蛙跳到或跳过坐标为L 的点时,就算青蛙已经跳出了独木桥。
题目给出独木桥的长度L ,青蛙跳跃的距离范围S,T ,桥上石子的位置。
你的任务是确定青蛙要想过河,最少需要踩到的石子数。
【输入文件】输入文件river.in 的第一行有一个正整数L (1 ≤ L ≤ 109),表示独木桥的长度。
第二行有三个正整数S ,T ,M ,分别表示青蛙一次跳跃的最小距离,最大距离,及桥上石子的个数,其中1≤S≤T≤10,1≤M≤ 100。
第三行有M 个不同的正整数分别表示这M 个石子在数轴上的位置(数据保证桥的起点和终点处没有石子)。
所有相邻的整数之间用一个空格隔开。
【输出文件】输出文件river.out 只包括一个整数,表示青蛙过河最少需要踩到的石子数。
方法1:搜索•直叙式搜索不行:搜索桥有困难(桥的长度1..109);搜索石子更困难,(石头的分布是没有任何规律)•优化:以桥的长度为对象搜索+巧妙的剪枝•分析:从桥的一侧到另一侧,中间最多只有100个石子。
假设桥长为最大值(109),石头数也为最大值(100),则中间一定会有很多“空长条” (两个石子中的空地),关键是如何在处理时把这些“空长条”跳过,使得运算次数降到M 次。
先求出青蛙可能跳到的所有位置,然后就可以在忽略“空长条”的前提下,计算青蛙过河最少需要踩到的石子数了。
算法的时间复杂度为O(m2)方法2、动态规划设opt[n]为青蛙到达n 位置最少需要踩到的石子数。
NOIP2018提高组复赛试题day2

NOIP2018提⾼组复赛试题day2CCF全国信息学奥林匹克联赛(NOIP2018)复赛提⾼组 day2(请选⼿务必仔细阅读本页内容)注意事项:1、⽂件名(程序名和输⼊输出⽂件名)必须使⽤英⽂⼩写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统⼀评测时采⽤的机器配置为:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz,内存32GB。
上述时限以此配置为准。
4、只提供Linux格式附加样例⽂件。
5、特别提醒:评测在当前最新公布的NOI Linux下进⾏,各语⾔的编译器版本以其为准。
1.旅⾏(travel.cpp/c/pas)【问题描述】⼩Y是⼀个爱好旅⾏的OIer。
她来到X国,打算将各个城市都玩⼀遍。
⼩Y了解到,X国的 n 个城市之间有 m 条双向道路。
每条双向道路连接两个城市。
不存在两条连接同⼀对城市的道路,也不存在⼀条连接⼀个城市和它本⾝的道路。
并且,从任意⼀个城市出发,通过这些道路都可以到达任意⼀个其他城市。
⼩Y只能通过这些道路从⼀个城市前往另⼀个城市。
⼩Y的旅⾏⽅案是这样的:任意选定⼀个城市作为起点,然后从起点开始,每次可以选择⼀条与当前城市相连的道路,⾛向⼀个没有去过的城市,或者沿着第⼀次访问该城市时经过的道路后退到上⼀个城市。
当⼩Y回到起点时,她可以选择结束这次旅⾏或继续旅⾏。
需要注意的是,⼩Y要求在旅⾏⽅案中,每个城市都被访问到。
为了让⾃⼰的旅⾏更有意义,⼩Y决定在每到达⼀个新的城市(包括起点)时,将它的编号记录下来。
她知道这样会形成⼀个长度为 n 的序列。
她希望这个序列的字典序最⼩,你能帮帮她吗?对于两个长度均为 n 的序列A和B,当且仅当存在⼀个正整数x,满⾜以下条件时,我们说序列A的字典序⼩于B。
对于任意正整数1≤iB i相同。
序列A的第x个元素的值⼩于序列B的第x个元素的值。
【输⼊格式】输⼊⽂件名为travel.in。
NOIP复赛模拟试题2

NOIP复赛模拟试题2预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制2013开明中学NOIP模拟试题2题目1、NBA总冠军(nba.pas/c/cpp)【问题描述】又要考试了,Ljw决定放松一下,就打开电视,看见了篮球赛,他立即想到了每年的NBA 总冠军队伍。
由于复习紧张,他只记起了一部分,记忆的内容是正确的,可能不是按时间顺序排列的,记忆的内容可能有重复。
现在请求学过编程的你帮助Ljw,按时间依次输出总冠军的球队(不能重复)。
(NBA 从1947A.D到2009A.D)【输入】输入文件nba.in的第一行是一个整数n(0<n<50)。
< bdsfid="75" p=""></n<50)。
<>接下来的n行,每行先是城市名(由大到小写字母、空格组成),后是时间(由数字组成)二者之间用空格隔开。
【输出】输出文件nba.out共n行,即排序后的NBA总冠军队伍。
每行先是时间,后是城市名。
【输入输出样例】2.买票(tickets.pas/c/cpp)【问题描述】周末Ztc想去剧场看演出,但他没有票。
这时,救世主Wzj出现了,他慷慨地愿意卖给Ztc 一些票。
Wzj手上共有n张票,但每张票的费用都不一样,贪心的ztc想要得到尽可能多的票,但又想花费最少,慷慨的wzj原意给连续的m张票。
Ztc 希望你能帮助他在花钱范围内取得最大的票数。
【输入】输入文件tickets.in的第一行是2个整数n,,f。
其中(2≤N≤1000000),表示票的数目,(10≤f≤10000),表示ztc身上的钱。
接下来的1行,有n个整数a(1≤a≤30),表示每一张票的票价。
【输出】输出文件tickets.out仅一行整数m,表示Ztc能得连续的最大票数。
【输入输出样例】【限制】50%的数据满足:2≤n≤10000100%的数据满足:2≤n≤10000003.逛街(shop.pas/c/cpp)【问题描述】某天,ZCL 在街上闲逛。
2018 年山东省信息学奥林匹克联赛(NOIP2018)复赛小学组试题(二)

2018年山东省信息学奥林匹克联赛(NOIP2018)复赛小学组试题(二)(2018年11月10日16:30~18:00)(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名注意事项:1.文件名(程序名和输入输出文件名)必须使用英文小写。
2.C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
三.参考文件输入输出操作以第一题为例:一.统计成绩【问题描述】考试结束之后,每位同学都依据成绩获得相应的等级:优秀:90~100;良好:80~89;及格:60~79;不及格:60以下。
现在,需要统计一下获得每个等级的人数分别是多少。
【输入】输入文件名为count.in。
第一行,一个正整数n,表示总人数。
第二行,n个由空格隔开的整数,表示每个同学的成绩(0~100)。
【输出】输出文件名为count.out。
共四行,每行一个整数,依次表示获得优秀、良好、及格、不及格等级的人数。
【输入输出样例】二. 11的倍数【问题描述】如判断一个正整数x是不是3的倍数?可以计算x÷3所得的余数,如果余数等于0,那么x是3的倍数。
还可以用下面的方法来判断:把x的个位数字、十位数字、百位数字、……相加,如果所得的和是3的倍数,那么x就是3的倍数。
例如:x = 8511, 8+5+1+1=15,15是3的倍数,那么8511就是3的倍数。
接下来你的任务是,判断x是不是11的倍数。
有一个与判断是不是3的倍数类似的方法供你参考:把x的个位、百位、万位、……上的数字求和,得s1;把x的十位、千位、十万位、……上的数字求和,得s2;如果s1÷11所得的余数 = s2÷11所得的余数,那么x就是11的倍数。
例如:x=3162819s1 = 3+6+8+9 = 26s2 = 1+2+1 = 4因为26÷11余4,4÷11也余4,所以3162819是11的倍数。
NOIP2003普及组(复赛)

NOIP2003普及组复赛试题题一、乒乓球(Table.pas)【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。
其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。
华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。
在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):WWWWWWWWWWWWWWWWWWWWWWLW在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。
而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。
如果一局比赛刚开始,则此时比分为0比0。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。
【输入格式】每个输入文件包含若干行字符串(每行至多20个字母),字符串有大写的W、L和E组成。
其中E表示比赛信息结束,程序应该忽略E之后的所有内容。
【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。
其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。
【输入样例】WWWWWWWWWWWWWWWWWWWWWWLWE【输出样例】11:011:01:121:02:1题二、数字游戏(Game.pas)【问题描述】丁丁最近沉迷于一个数字游戏之中。
这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。
游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。
2017 年山东省信息学奥林匹克联赛(NOIP2017)复赛小学组试题(二)

2017年山东省信息学奥林匹克联赛(NOIP2017)复赛小学组试题(二)(2017年11月11日16:30~18:00)(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名注意事项:1.文件名(程序名和输入输出文件名)必须使用英文小写。
2.C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
三.参考文件输入输出操作以第一题为例:一. 6174问题【问题描述】假设你有一个各位数字不完全相同的四位数,把所有的数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并且继续操作。
例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174、7641-1467=6174,又回到了它自己!现在请你写一个程序来判断一个四位数经过多少次这样的操作能出现循环。
比如输入1234执行顺序是1234->3087->8352->6174->6174,输出结果是4。
【输入】输入文件名为kaprekar.in。
输入文件第一行是一个正整数n,表示有n组测试数据,接下来的n行,每行一个各位数字不完全相同的四位数。
【输出】输出文件名为kaprekar.out。
对于每组测试数据输出一行,每行中只有一个整数,表示经过多少次操作才出现循环。
【输入输出样例】对于50%的数据:0<n<=100;对于100%的数据:0<n<=10000。
二. 素数【问题描述】走进世博园某信息通信馆,参观者将获得前所未有的尖端互动体验,一场充满创想和喜悦的信息通信互动体验秀将以全新形式呈现,从观众踏入展馆的第一步起,就将与手持终端密不可分,人类未来梦想的惊喜从参观者的掌上展开。
在等候区的梦想花园中,参观者便开始了他们奇妙的体验之旅,等待中的游客可利用手机等终端参与互动小游戏,与梦想剧场内的虚拟人物Kr. Kong 进行猜数比赛。
noip复赛模拟试题

noip复赛模拟试题第一题:最大字符(zdzf.c/cpp)读入一串由大写、小写、数字组成的字符(<256位),输出ASCII 表值最大的那个字符出来。
例如:读入:abeADEf3输出:e第二题:盖房子(gfz.c/cpp)题目正文【问题描述】永恒の灵魂最近得到了面积为n*m的一大块土地(高兴ING^_^),他想在这块土地上建造一所房子,这个房子必须是正方形的。
但是,这块土地并非十全十美,上面有很多不平坦的地方(也可以叫瑕疵)。
这些瑕疵十分恶心,以至于根本不能在上面盖一砖一瓦。
他希望找到一块最大的正方形无瑕疵土地来盖房子。
【输入格式】输入文件第一行为两个整数n,m(1<=n,m<=1000),接下来n 行,每行m个数字,用空格隔开。
0表示该块土地有瑕疵,1表示该块土地完好。
【输出格式】一个整数,最大正方形的边长。
【输入样例】4 40 1 1 11 1 1 00 1 1 01 1 0 12第三题:IQ(iq.c/cpp)题目正文【问题描述】根据世界某权威学会的一项调查,学信息学的学生IQ非常高。
举个最好的例子,如果我们把学信息学的一些学生调去学数学,那么两个竞赛的学生平均IQ都会提升!!现在给出一群数学竞赛全体学生的IQ和信息学竞赛全体学生IQ,问最多能把几个学信息学的学生调去学数学,而两个竞赛的学生平均IQ都有提升呢?每次只调一个学生,而且每次调配,两个竞赛的学生平均IQ都要提升。
【输入格式】输入数据的第一行一个正整数N,代表数学竞赛班学生的数目。
N <= 100接下来一行,有N个正整数,代表每个数学学生的IQ(1 到 200 之间)。
然后一个整数M,代表信息学竞赛班学生数目 M <= 100接下来一行,有M一个正整数,代表每个信息学竞赛班学生的IQ (1 到 200 之间)输入数据保证信息学学生平均IQ高于数学学生。
输出格式:输出只有一行,一个正整数,代表能从信息学调去学数学的学生的个数。
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NOIP复赛测试题3
1、神牛果(cow.cpp)
【题目描述】
在某次膜拜大会上,一些神牛被要求集体膜拜。
这些神牛被奖励每人吃一些神牛果。
但是,每个神牛的肚量不一样。
为了不显得某些人吃得太多,决定两人一组,使得吃得最多的那组吃得尽量少。
(神牛数为偶数)
【输入格式】
第一行一个整数 n(<=10000) 。
第二行有 n 个正整数,为给定的一列数字,表示每个神牛能吃多少神牛果。
(数字均小于 1000000000)
【输出格式】
一个正整数,吃的最多的一组神牛吃的个数的最小值。
【输入样例】
4
1 5
2 8
【输出样例】
9
2、序列1(ones.cpp)
【题目描述】
输入一个不含因子2和5的整数n,计算在十进制下至少多少个连续的1能被n整除。
【输入格式】
第一行为正整数t(<10000);接下来t行,每行一个正整数n(≤10000)。
【输出格式】
对于每个数据,输出一个整数m,表示至少连续m个1能被n整除。
【输入样例】
2
3
9901
【输出样例】
3
12
【样例说明】
111能被3整除,而111111111111能被9901整除。
3、过桥问题(bridge.cpp)
【问题描述】
现在有N辆车要按顺序通过一个单向的小桥,由于小桥太窄,不能有两辆车并排通过,所以在桥上不能超车。
另外,由于小桥建造的时间已经很久,所以只能承受有限的重量,记为MAX(吨),即任意时刻在桥上行驶的车辆的总重量不能超过MAX(吨)。
因此,车辆在过桥的时候必须有管理员控制,将这N辆车按初始的顺序分组,每次让一个组过桥,并且只有
在一个组中的所有的车辆全部过桥之后才能让下一组车辆上桥,而每组车的过桥时间由该组中速度最慢的那辆车决定。
现在,给出每辆车的重量和最大速度,编程将这N辆车分组,使得全部车辆通过小桥的时间最短。
【输入格式】
第一行有3个数,分别为MAX(吨)、Len(桥的长度,单位:Km)和N(以空格隔开);接下来有N行,每行有两个数,分别表示每辆车的重量Ti(吨)和最大速度Vi(Km/h)。
MAX<3000,Len<300,N<500,Ti<MAX,Vi<1000
【输出格式】
仅一个数,表示全部车辆通过小桥的最短时间(单位:minute),精确到小数点后一位。
【样例输入】
100 5 10
40 25
50 20
50 20
70 10
12 50
9 70
49 30
38 25
27 50
19 70
【样例输出】
75.0
4、编码(code.cpp)
【问题描述】
下面对一个字符系统进行编号,这个字符系统全部使用小写字母,并且字符为升序排列,然后先对长度为1的字符串编号,再对长度为2的字符串编号,…。
例如:a(1),b(2),…, z(26),ab(27),…az(51),…vwxyz(83681)。
【输入格式】
第一行为测试数据组数t,接下来t行,每行一个字符串(长度不超过10,且全部由小写字母组成)。
【输出格式】
对于每一个测试数据,输出一个正整数,表示它的编号。
如果不存在这样的字符串(即字符串不是升序的),则输出0。
【样例输入】
2
bf
vwxyz
【样例输出】
55
83681。