NOIP复赛模拟试题I.doc
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)。
NOIP复赛模拟题一

NOIP复赛模拟题一1、与3和5无关的数(num.cpp)描述一个正整数x,如果它能被x整除,或者它的十进制表示法中某个位数上的数字为x,则称其为与x相关的数.现求所有小于等于n(n<300)的与x无关的正整数的平方和.<300)的与x无关的正整数的平方和.</300)的与X无关的正整数的平方和.输入输入为一行,正整数n,(n<300)输出输出小于等于n的与3和5无关的正整数的平方和样例输入8(8^2+7^2+4^2+2^2+1^2)样例输出1342、小白鼠再排队(mouse.cpp)描述N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。
现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。
帽子的颜色用“red”,“blue”等字符串来表示。
不同的小白鼠可以戴相同颜色的帽子。
白鼠的重量用整数表示。
输入输入第一行为一个整数N,表示小白鼠的数目。
下面有N行,每行是一只白鼠的信息。
第一个为正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。
注意:白鼠的重量各不相同。
输出按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。
样例输入330 red50 blue40 green样例输出redgreenblue3、滑雪(skate.cpp)描述Michael喜欢滑雪百这并不奇怪,因为滑雪的确很刺激。
可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。
Michael想知道载一个区域中最长的滑坡。
区域由一个二维数组给出。
数组的每个数字代表点的高度。
下面是一个例子1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。
在上面的例子中,一条可滑行的滑坡为24-17-16-1。
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. 编写一个函数,实现计算一个整数的阶乘。
NOIP2021复赛提高组模拟试题

NOIP2021复赛提高组模拟试题ccf全国信息学奥林匹克联赛(noip2021)复赛day1第二轮CCF国家信息学奥林匹克联盟(noip 2022)提高组day1(请仔细阅读本页)一、题目概况中文题目名称英文题目与子目录名可执行文件名输入文件名输出文件名每个测试点时限测试点数目每个测试点分值附加样例文件结果比较方式题目类型运行内存上限二、提交C++语言的源程序文件名,C语言的源程序文件名,Pascal语言的源程序文件名三、编译命令(不包含优化开关)对于C++语言对于C语言对于Pascal语言注意事项:1.文件名(程序名和输入/输出文件名)必须使用小写英语。
2、c/c++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3.国家统一评估使用的机器配置为cpuamdathlon(TM)64x2dualcorecpu5200+、2.71ghz和2G内存。
以上时限以本配置为准。
4.仅提供Linux格式的其他示例文件。
5、特别提醒:评测在noilinux下进行。
6.为了便于评估,请使用您姓名的拼音作为文件夹名称,并将原始程序直接保存在文件夹中,无需创建新的子文件夹。
g++-opfpf.cpp-g++-otoytoy.cpplmclmgcc-opfpf.c-lmgcc-lmfpcpf.pasfpctoy.pasg++-orunningrunning.cpp-lmgcc-orunningrunning.c-lmfpcrunning.paspf.cpppf.cpf.pastoy.cpptoy.ctoy.pasrunning.cpprunning.crunning.pas斐波那契玩具跑步pftoyrunningpftoyrunningpf.intoy.inrunning.inpf.outtoy.outrunning.out1s1s1s102 0201055是是是全文比较(忽略行末空格和行尾回车)传统传统传统128mb128mb128mb第1页,共5页CCF国家信息学奥林匹克联盟(noip2022)半决赛第1天1.斐波那契(pf.pas/c/cpp)【问题描述】他是斐波那契迷。
NOIP复赛模拟练习题

NOIP复赛模拟练习题(一)1.埃及分数源文件:egfranc.pas/c/cpp可执行文件:egfranc.exe输入文件:egfranc.in输出文件:egfranc.out古代埃及人喜欢用分子为1的分数,即使是普通的分数他们也喜欢将它转为若干个分子为1的分数的和。
如2/5,他们习惯表示为:1/3+1/15。
现要求你将输入的一个分子不为1的真分数转为若干个分子为1的不同的分数的和,输出要求按分母由小到大的顺序,并且是分母尽可能的小。
输入两个自然数A、B,分别表示分子和分母,输出相应的埃及分数。
样例:egfranc.in2 5egfranc.out2/5=1/3+1/152.N个因子的最小自然数源文件:minnat.pas/c/cpp可执行文件:minnat.exe输入文件:minnat.in输出文件:minnat.out一个自然数总有若干个因子,如6有4个因子:1,2,3,6。
现要求你对于给定的自然数n(1<n<=10000),求出有n个因子的最小自然数。
输入就一个数n,输出有n个因子的最小自然数。
样例:minnat.in15minnat.out1443.数字拆成K份源文件:numkd.pas/c/cpp可执行文件:numkd.exe输入文件:numkd.in输出文件:numkd.out将一个正整数n拆成k个正整数之和,如n=5,k=2时,不同的拆分方法有两种:5=1+4=2+3。
现要求根据给定的n和k,求出可能的不同拆分的数目。
输入就一行两个数,分别表示n和k(1<n<1000,0<k<=n),输出就一个数字,表示不同的拆分方法数目。
样例:numkd.in5 2numkd.out24、好心的出租车司机源文件:taxi.pas/c/cpp可执行文件:taxi.exe输入文件:taxi.in输出文件:taxi.out题目描述一位出租车司机向你抱怨:城市发展太快,公路越来越多,他已经疲于计算行驶路线,于是求助你开发一个自动导航的工具。
历届noip提高组复赛试题

NOI’ 95“同创杯”全国青少年信息学(计算机)奥林匹克竞赛分区联赛复赛试题(高中组)(上机编程,完成时间:210 分钟)<1>编码问题:设有一个数组A:ARRAY[0..N-1] OF INTEGER;数组中存放的元素为0~N-1 之间的整数,且A[i]≠ A[j](当i≠ j时)。
例如: N=6 时,有:此时,数组 A 的编码定义如下:A[0] 的编码为0;A[i] 的编码为:在A[0] ,A[1]∴上面数组 A 的编码为:A= ( 4,3, 0, 5,1, 2),, A[i-1] 中比 A[i] 的值小的个数(B= (0, 0,0,3,1, 2)i=1 ,2,, N-1 )程序要求解决以下问题:①给出数组 A 后,求出其编码。
②给出数组 A 的编码后,求出 A 中的原数据。
<2> 灯的排列问题:设在一排上有 N 个格子( N≤ 20),若在格子中放置有不同颜色的灯,每种灯的个数记为 N 1, N2, N k( k 表示不同颜色灯的个数)。
放灯时要遵守下列规则:①同一种颜色的灯不能分开;②不同颜色的灯之间至少要有一个空位置。
例如: N=8 (格子数)R=2 (红灯数)B=3 (蓝灯数)放置的方法有:R-B 顺序R R B B BR R B B BR R B B BR R B B BR R B B BR R B B BB-R顺序B B B BBBBBBBBBBBBBBR RRRBRRRRRRRR放置的总数为12 种。
数据输入的方式为:NP1(颜色,为一个字母)P2N1(灯的数量)N2Q(结束标记, Q 本身不是灯的颜色)程序要求:求出一种顺序的排列方案及排列总数。
<3> 设有一个四层的积木块,1~ 4 层积木块的数量依次为:5, 6,7, 8如下图所示放置:815851691423414326其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。
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到网上下载了一个溶液配置模拟器。
NOIP普及组复赛试题

P1909 买铅笔题目描述P教师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。
她发觉商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价钱也有可能不同。
为了公平起见,P教师决定只买同一种包装的铅笔。
商店不许诺将铅笔的包装拆开,因此P教师可能需要购买超过n支铅笔才够给小朋友们发礼物。
此刻P教师想明白,在商店每种包装的数量都足够的情形下,要买够至少n支铅笔*最少*需要花费多少钱。
输入输出格式输入格式:输入的第一行包括一个正整数n,表示需要的铅笔数量。
接下来三行,每行用两个正整数描述一种包装的铅笔:其中第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价钱。
保证所有的7个数都是不超过10000的正整数。
输出格式:输出一行一个整数,表示P教师最少需要花费的钱。
输入输出样例输入样例#1:输出样例#1:输入样例#2:说明铅笔的三种包装别离是:•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。
【子任务】子任务会给出部份测试数据的特点。
若是你在解决题目中碰到了困难,能够尝试只解决一部份测试数据。
每一个测试点的数据规模及特点如下表:上表中“整倍数”的意义为:假设为“K”,表示对应数据所需要的铅笔数量n—定是每种包装铅笔数量的整倍数(这意味着必然能够不用多买铅笔)。
P2020 回文日期题目描述在日常生活中,通过年、月、日这三个要素能够表示出一个唯一确信的日期。
NOIP复赛普及组模拟题1

题目概况1.星图题目描述:天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。
如果一个星星的左下方(包含正左和正下)有k颗星星,就说这颗星星是k级的。
比如,在上面的例图中,星星5是3级的(1,2,4在它左下)。
星星2,4是1级的。
例图中有1个0级,2个1级,1个2级,1个3级的星。
给定星星的位置,输出各级星星的数目。
输入文件:第1行一个整数N(1<=N<=15000),表示星星的数目。
接下来N行给出每颗星星的坐标,两个整数X,Y(0<=X,Y<=32000),不会有星星重叠。
星星按Y坐标增序列出,Y坐标相同的按X坐标增序列出。
输出文件:N行,每行一个整数,分别是0级,1级,2级……N-1级的星星的数目。
全国信息学奥林匹克联赛复赛普及组模拟赛SANPLE INPUT:51 15 17 13 35 5SANPLE OUTPUT:12112.电话薄【问题描述】不同的人对自己的电话号码簿有不同的需求。
有人喜欢开门见山,打头就是电话号码;有人喜欢在电话簿的开始几页写上自己的格言;有人喜欢在电话簿上先画上自己的杰作;又比如Black家族的人则喜欢在电话簿的第一页写上自己的格言,第二页是目录,第三页开始是电话记录;而White印象派世家的人喜欢在电话簿的头两页和最后两页都画上自己的杰作,中间几页是电话记录。
PIG电话簿制作中心刚刚收到了一封Jim Black的来信,要求帮他制作一本能让他满意的电话簿。
他已经在信中说明了需要被写入电话簿的N个电话号码,要求制作一本能包含所有电话记录的电话簿。
每条记录有两行,第一行是电话号码,第二行空着留给Jim本人填写,比如写“这是我从小穿着一条开裆裤长大的朋友Tim White”“这是我亲爱的丈母娘”。
而每页的记录数目当然也不能太多,Jim要求最多仅能有2K行。
这个城市的电话号码有仅有4位,主要是因为人口太少了。
而普通家庭的电话打头的不能是0和8,因为这些是都是留给政府作为特殊服务的号码,比如报警电话0110,救护电话0120,声讯服务台8888。
(NOIP2009)复赛模拟试题

金华一中信息学奥林匹克联赛(NOIP2009)复赛模拟试题(十五)一、题目概览二、运行内存限制1.不怕噩梦【题目描述】蚊子最近经常做噩梦,然后就会被吓醒。
这可不好。
疯子一直在发愁,然后突然有一天,他发现蚊子其实就是害怕某些事。
如果那些事出现在她的梦里,就会害怕。
我们可以假定那个害怕的事其实是一个字符串。
而她做的梦其实也是一个字符串。
她可以一个晚上一直做梦,所以梦这个字符串会很长,如果其中包含了她所害怕的事情,那么她这天晚上就会害怕。
当然一个害怕的事也可能在这天晚上被她梦到很多遍,当然每个晚上也可能有很多种害怕的事都被梦到。
每个害怕的事都有一定的权值。
而这天晚上如果梦到了某件事,那么这件事所产生的黑暗效果等于这件事的权值乘以这个害怕的事在梦字符串里的开始位置。
如果同样的事梦到了很多遍,那么就重复上面的操作很多遍。
当天晚上的黑暗效果总和等于当天所有害怕的事产生的黑暗效果累加到一起。
现在疯子想知道蚊子这些天来噩梦的黑暗效果总和是多少。
【输入格式】:第1行两个整数N,M代表一共有N天梦和M个害怕的事。
第2行到第M+1行。
每行一个字符串ti,代表第I个害怕的事第M+2行到第2M+2行。
每行一个整数ai.代表第I个害怕的事权值第2M+3行到第N+2M+3行。
每行一个字符串si,代表第I天的梦。
【输出格式】SUMSUM=N天里黑暗效果的总和。
我们保证每天的黑暗效果都小于maxlongint;【输入样例】2 2abcdef12abcdefdefabc【输出样例】15【友情提示】1*1+2*4+1*4+2*1=15对于数据的把握和时间复杂度的估计是成败的关键。
如果出现一个梦是:ab而害怕的事有a,b,ab,那么a,b,ab都需要参与计算..【数据规模】对于30%的数据N,M<=50对于所有的数据N<=200.M<=200. length(si)<=200.length(ti)<=200.ai<=10.2.那23个路口【题目描述】故事的起源不加赘述,那23个路口。
第十届NOIP复赛试题及答案

第十届全国青少年信息学奥林匹克联赛复赛试题及答案一、不高兴的津津(unhappy.pas/dpr/c/cpp)【问题描述】津津上初中了。
妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。
另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。
但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。
假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。
请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
【输入文件】输入文件unhappy.in包括七行数据,分别表示周一到周日的日程安排。
每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
【输出文件】输出文件unhappy.out包括一行,这一行只包含一个数字。
如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。
如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
【样例输入】5 36 27 25 35 40 40 6【样例输出】3二、花生采摘(peanuts.pas/dpr/c/cpp)【问题描述】鲁宾逊先生有一只宠物猴,名叫多多。
这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。
鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。
在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。
有经验的多多一眼就能看出,每棵花生植株下的花生有多少。
为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。
”我们假定多多在每个单位时间内,可以做下列四件事情中的一件:1) 从路边跳到最靠近路边(即第一行)的某棵花生植株;2) 从一棵植株跳到前后左右与之相邻的另一棵植株;3) 采摘一棵植株下的花生;4) 从最靠近路边(即第一行)的某棵花生植株跳回路边。
NOIP提高组复赛试题

全国信息学奥林匹克联赛(2014)复赛提高组11.生活大爆炸版石头剪刀布()【问题描述】石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。
如果两个人出拳一样,则不分胜负。
在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。
升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。
蜥蜴人:《星际迷航》中的反面角色。
这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。
现在,小A和小B尝试玩这种升级版的猜拳游戏。
已知他们的出拳都是有周期性规律的,但周期长度不一定相等。
例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-……”,而如果小B 以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……”已知小A和小B一共进行N次猜拳。
每一次赢的人得1分,输的得0分;平局两人都得0分。
现请你统计N次猜拳结束之后两人的得分。
【输入】输入文件名为。
第一行包含三个整数:N,,,分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。
数与数之间以一个空格分隔。
第二行包含个整数,表示小A出拳的规律,第三行包含个整数,表示小B出拳的规律。
其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”,4表示“斯波克”。
数与数之间以一个空格分隔。
【输出】输出文件名为。
输出一行,包含两个整数,以一个空格分隔,分别表示小A、小B的得分。
【输入输出样例1】【输入输出样例2】【数据说明】对于100%的数据,0 < N ≤200,0 < ≤200,0< ≤200。
2.联合权值()【问题描述】无向连通图G有n个点,1条边。
点从1到n依次编号,编号为i的点的权值为,每条边的长度均为1。
NOIP 2012复赛 模拟练习卷(一)

NOIP 2012复赛模拟练习卷(一)1.序列(sequence.cpp/c/pas)【问题描述】有一个整数序列,它的每个数各不相同,我们不知道它的长度(即序列中的整数个数)是多少,但我们知道,在某些区间中至少有多少个整数,用区间(Li,Ri,Ci)来描述,表示这个整数序列中至少有Ci个数来自区间[Li,Ri]。
给定若干个这样的区间,问这个整数序列的长度最少能为多少?【输入】(sequence.in)第1行:一个正整数N,表示区间个数。
接下来N行:每行三个正整数Li、Ri和Ci,描述一个区间。
【输出】(sequence.out)输出一个数,表示该整数序列的最小长度。
【输入样例】44 5 16 10 37 10 35 6 1【输出样例】4【数据规模】N<=1000, 0<=Li<=Ri<=1000, 1<=Ci<=Ri-Li+12.call (call.cpp/c/pas)【问题描述】有M座房屋排列在一条直线上。
房屋之间会互相打电话,现在,在一些房屋之间安装了监听器,每当两个位于监听器两侧的房屋之间打了电话,监听器就计一次数。
现在知道每个监听器的位置和计数,问总共最少可能打了多少个电话。
【输入】第一行上有两个整数N和M(N<M≤1000000000),N表示监听器个数,M表示房屋数。
接下来N行,每行两个整数P i和C i,表示第i个监听器位于房屋P i和P i+1之间,计数C i次(0≤Ci ≤100000)。
【输出】一行,一个整数,表示最少可能打了多少个电话。
【样例输入一】3 43 12 2【样例输出一】2【样例输入二】2 31 232 17【样例输出二】23【样例输入三】3 97 28 33 4【样例输出三】53.planting (planting.cpp/c/pas)【问题描述】在一个笛卡尔平面坐标系里(X轴向右是正方向,Y轴向上是正方向),有N(1<=N<=10)个矩形,第i个矩形的左上角坐标是(x1,y1),右下角坐标是(x2,y2)。
NOIP复赛模拟试卷(三)

NOIP复赛模拟试卷(三)第一题 Game【题目描述】小M在玩一个游戏。
游戏有N轮,每一轮,系统给出两个数X和Y,她的任务是将当前得到的所有X和Y两两配对,将每对X、Y求和,使得最大的和最小。
小M算晕了,于是找你帮忙~【输入格式】输入第一行包含一个整数N(1<=N<=100000)接下来N行,每行两个整数X、Y(1<=X,Y<=100)【输出格式】输出共N行,每行一个整数,对于当前得到的所有X和Y进行配对,输出最大和最小的值。
【样例】game.in32 83 11 4game.out10109【数据范围】对于50%的数据,N<=200;对于100%的数据,N<=100000。
第二题 frog【题目描述】一些瓷砖排成一排,其中站着一只青蛙。
瓷砖有两面,分别为白色和黑色。
青蛙所所在的位置是没有瓷砖的。
比如我们可以用BWFBBW表示瓷砖和青蛙的状态:黑-白-青蛙-黑-黑-白。
青蛙在其中跳来跳去,它可以选择向左或向右跳跃一格(在左边或右边有瓷砖的前提下),这样左边或右边的瓷砖就会滑向原来青蛙所在的位置。
比如上面例子中青蛙向右跳跃一格之后变成:BWBFBW。
另外,青蛙可以选择隔一个瓷砖跳,即跳到它右边的右边或左边的左边(在这些格子里有瓷砖的前提下),然后这些格子里的瓷砖会翻一面跳到青蛙原来所在的位置。
比如BWFBBW中的青蛙越过右边的瓷砖跳到右边的右边的瓷砖,之后变成:BWWBFW。
青蛙想要通过最少的跳跃步数使得任意两个黑瓷砖之间都没有任何白瓷砖。
【输入格式】输入包含一行一个串,表示原始瓷砖和青蛙的状态。
B代表黑瓷砖,W代表白瓷砖,F 代表青蛙。
保证数据中只有一只青蛙。
串不为空且长度不超过100。
【输出格式】输出一行一个整数,表示最少的跳跃步数;如果不能在10步之内完成,输出-1。
【样例】frog.inWWBBFBWfrog.outfrog.inWWFBWBWfrog.out1【数据范围】对于30%的数据,串的长度不超过10;对于100%的数据,串的长度不超过100。
NOIP普及组复赛模拟试题(一)

NOIP普及组复赛模拟试题一PROBLEM 1:二进制字典排序字符串(Filename:Seq.pas Inputfile:seq.in Outputfile:seq.out)[题目描述]假设字符串的长度为N (0 < N < 44), 仅由0与1组成,没有二个1是相邻的。
110就不是一个合法的,0101就是一个合法的四位的字符串,将它们按字典顺序排列下来,请问第K个(0 < K < 1000000000)字符串是哪一个,如果K的值超过的N位字符串的总个数,就输出-1。
[Input]一行包含两个正整数N 和 K。
[Output]相应的字符串或-1。
Sampleinput Output3 1 000PROBLEM 2: 非琐碎数(Filename:Trivial.pas Inputfile:trivial.in Outputfile:trivial.out)[题目描述]规定正整数的琐碎度为它的除了自身以外的所有约数的和除以它自己的值。
如10的琐碎度为0.8=(1+2+5)/10, 20的琐碎度为1.1 = (1 + 2 + 4 + 5 + 10) / 20。
给你两个数 0 < I <= J < 1000000,找出满足 I <= N <= J 的 N,使 N 是琐碎度最小的整数。
[Input]两个数 I 和J, 0 < I ≤ J ≤ 1000000。
[Output]输出N。
Sampleinput output24 28 25PROBLEM 3:石头分堆(Filename:Stone.pas Inputfile:stone.in Outputfile:stone.out)[题目描述]你有一堆石头,重量为w[1],w[2]..w[n]。
把他们分成两堆,使两堆重量的差最小。
[Input]第一个数n(1<=n<=20)石头的个数。
接下来n个数W1…Wn(1<=Wi<=100000)石头的重量。
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高于数学学生。
输出格式:输出只有一行,一个正整数,代表能从信息学调去学数学的学生的个数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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<k<109),求一组满足上述两个条件的m、n,并且使m2+n2的值最大。
例如,从键盘输入k=1995,则输出:m=987 n=1597。
【输入格式(number.in)】
一个整数k
【输出格式(number.out)]
共两行,分别为和“n=....”
【输入样例】
1995
【输出样例】m=987 n=1597
4、牛的旅行(fun.cpp)
【问题描述】
农民John的农场里右很多牧区。
柯的路径连接一些特定的牧区。
一片所科连通的牧区称为一个
牧场。
但是就目前而言,你能看到至少冇两个牧区不连通。
现在,John想在农场里添加一条路径(注
意,价好一条)。
对这条路径有这样的限制:一个牧场的直径就是牧场中敁远的两个牧区的距离(木
题中所提到的所冇距离指的都是敁短的距离)。
考虑如下
的两个牧场,图1足奋5个牧区的牧场,牧区用表示,路径用直线表示。
毎一个牧区都冇自己的坐标:图1所示的牧场的莨校人约是12.07106, 最远的
两个牧区是A和E,它们之间的最短路径是
A-B-E。
这两个牧场都在John的
农场上。
John将会在两个牧场中各选一个牧区,
然后用一条路径连起来,使得连通后这个新的
更大的牧场有最小的直径。
注意,如果两条路径
中途相交,我们不认为它们是连通的。
只有两条路径在M—个牧区相交,我们方认为它们是连通的。
现在请你编程找出一条
连接两个不同牧场的路径,使得连上这条路径这个更人的新牧场杏最小的茛径。
【输入格或(fun.in)】
第1行:一个整数N(l<=N<=150),表示牧区数;第2到N+1行:每行两个整数
X,Y ( 0 <= X, Y<= 100000 ),表示N个牧区的坐标。
每个牧区的坐标都是不一样的。
笫N+2行到第2*N+1行:毎行包拈N个数字(0或1 )表示一个对称邻接矩阵。
例如,题目描述中的两个牧场的矩阵描述如下:
ABCDEFGH
A0 1000000
B 1 0 1 1 1000
C0 1 001000
DO 1 001000
E 0 1 1 10 0 0 0
F 0 0 0 0 0 0 1 0
G0*******
H00000010
输入数据屮至少包拈两个不连通的牧区。
【输出格式(fun.out)】
只冇一行,包括一个实数,表示所求答案。
数字保留六位小数。
【输入样例】
8
10 10
15 10
20 10
15 15
20 15
30 15
25 10
3() 1()
01000000
10111000
01001000
01001000
01110000
00000010
00000101
00000010
【输出样例】
22.071068。