NOIP2016提高组复赛试题(Day1+Day2)

合集下载

NOIP2016提高组Pascal试题

NOIP2016提高组Pascal试题

第二十二届全国青少年信息学奥林匹克联赛初赛提高组 Pascal 语言试题竞赛时间:2016 年 10 月 22 日 14:30~16:30选手注意:●试题纸共有12 页,答题纸共有2 页,满分100 分。

请在答题纸上作答,写在试题纸上的一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共15 题,每题1.5 分,共计22.5 分;每题有且仅有一个正确选项)1.以下哪一种编程语言是最早的面向对象程序设计语言()。

A. JavaB. SmalltalkC. Visual BasicD. Fortran2.人工智能之父图灵在二战中所研发的计算机()成功破译了德军的密码。

A.EnigmaB.巨人计算机C.ENIACD.ABC计算机3.128KB的存储器用十六进制表示,它的最大的地址码是( )A. 10000B. EFFFC. 1FFFFD. FFFFF4.下列说法不正确的是()。

A.在逻辑电路中,与门可以用或门和非门的组合来代替B.在逻辑电路中,或门可以用与门和非门的组合来代替C.在逻辑电路中,亦或门可以用与门和非门的组合来代替D.以上选项有一个是错的5.以下十进制小数的二进制表述不是无限循环小数的是()。

A. 0.123B. 0.124C. 0.125D. 0.1266.在半导体中经常会使用单向导电的PN结,其中P型半导体的载流子为()。

A. 电子B. 正电子C. 负离子D. 空穴7.计算机病毒传染的必要条件是( ) 。

A. 与万维网联通B. 删除文件C. 对磁盘进行读写操作D. 复制文件8.计算机网络可分为三类,它们是( )。

A. Internet、Intranet、ExtranetB.广播式网络、移动网络、点-点式网络C. X.25、MAN、WAND. LAN、MAN、WAN9.近期一款新游戏“精灵宝可梦”让玩家可以实现在生活中捕捉精灵,其实现主要运用了()技术。

NOIP提高组复赛题目

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。

noip2017提高组试题(day1+day2)-Word版

noip2017提高组试题(day1+day2)-Word版

全国信息学奥林匹克联赛(2017)复赛提高组 1(请选手务必仔细阅读本页内容)一.题目概况注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

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

3、全国统一评测时采用的机器配置为: () x2 240 ,2.8,内存 4G,上述时限以此配置为准。

4、只提供格式附加样例文件。

5、提交的程序代码文件的放置位置请参照各省的具体要求。

6、特别提醒:评测在当前最新公布的下进行,各语言的编译器版本以其为准。

【问题描述】1.小凯的疑惑()小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。

每种金币小凯都有无数个。

在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。

现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。

【输入格式】输入文件名为。

输入数据仅一行,包含两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯手中金币的面值。

【输出格式】输出文件名为。

输出文件仅一行,一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。

【输入输出样例 1】见选手目录下的 1 和 1。

【输入输出样例 1 说明】小凯手中有面值为3 和7 的金币无数个,在不找零的前提下无法准确支付价值为1、2、4、5、8、11 的物品,其中最贵的物品价值为 11,比 11 贵的物品都能买到,比如:12 = 3 * 4 + 7 * 013 = 3 * 2 + 7 * 114 = 3 * 0 + 7 * 215 = 3 * 5 + 7 * 0……【输入输出样例 2】见选手目录下的 2 和 2。

【数据规模与约定】对于 30%的数据: 1 ≤ a,b ≤ 50。

对于 60%的数据: 1 ≤ a,b ≤ 10,000。

对于 100%的数据:1 ≤ a,b ≤ 1,000,000,000。

NOIP提高组复赛题解

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提高组复赛试题

历届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其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。

NOIP2016提高组复赛试题(Day1+Day2)

NOIP2016提高组复赛试题(Day1+Day2)

第22 届全国青少年信息学奥林匹克联赛2016提高组(复赛)第一试竞赛时间:2016 年11 月19 日 8:30 ∼ 12:00提交源程序文件名编译选项注意事项:1. 文件名(程序名和输入输出文件名)必须使用英文小写。

2. 除非特殊说明,结果比较方式均为忽略行末空格及文末回车的全文比较。

3. 中函数()的返回值类型必须是,程序正常结束时的返回值必须是0。

4. 全国统一评测时采用的机器配置为: () x2 240 ,2.8,内存4G,上述时限以此配置为准。

5. 只提供格式附加样例文件。

6. 评测在下进行。

7. 编译时不打开任何优化选项。

玩具谜题()【问题描述】小南有一套可爱的玩具小人,它们各有不同的职业。

有一天,这些玩具小人把小南的眼镜藏了起来。

小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。

如下图:这时告诉小南一个谜题:“眼镜藏在我左数第3 个玩具小人的右数第1 个玩具小人的左数第2 个玩具小人那里。

”小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;而面向圈外的玩具小人,它的左边是逆时针方向,右边是顺时针方向。

小南一边艰难地辨认着玩具小人,一边数着:“朝内,左数第3 个是。

“朝外,右数第1 个是。

“朝外,左数第2 个是。

“所以眼镜藏在这里!”虽然成功找回了眼镜,但小南并没有放心。

如果下次有更多的玩具小人藏他的眼镜,或是谜题的长度更长,他可能就无法找到眼镜了。

所以小南希望你写程序帮他解决类似的谜题。

这样的谜题具体可以描述为:有n 个玩具小人围成一圈,己知它们的职业和朝向。

现在第 1 个玩具小人告诉小南一个包含m 条指令的谜题,其中第i 条指令形如“左数/右数第个玩具小人”。

你需要输出依次数完这些指令后,到达的玩具小人的职业。

【输入格式】从文件中读入数据。

输入的第一行包含两个正整数,表示玩具小人的个数和指令的条数。

NOIP2016提高组C++试题

NOIP2016提高组C++试题

贵州贵州第二十二届全国青少年信息学奥林匹克联赛初赛提高组C++语言试题竞赛时间:2016年10月22日14:30~16:30选手注意:● 试题纸共有13页,答题纸共有2页,满分100分。

请在答题纸上作答,写在试题纸上的一律无效。

● 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)1. 以下不是微软公司出品的软件是( )。

A. Powerpoint B. Word C. Excel D. Acrobat Reader2. 如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照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. a3. 二进制数00101100和01010101异或的结果是( )。

A. 00101000 B. 01111001 C. 01000100 D. 001110004. 与二进制小数0.1相等的八进进制数是( )。

A. 0.8 B. 0.4 C. 0.2 D. 0.15. 以比较作为基本运算,在N 个数中找最小数的最少运算次数为( )。

A. N B. N-1 C. N 2 D. log N6. 表达式a*(b+c)-d 的后缀表达形式为( )。

A. abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd7. 一棵二叉树如右图所示,若采用二叉树链表存储该二叉树(各个结点包括结点的数据、左孩子指针、右孩子指针)。

如果没有左孩子或者右孩子,则对应的为空指针。

那么该链表中空指针的数目为( )。

A. 6 B. 7 C. 12 D.14贵州贵州8. G 是一个非连通简单无向图,共有28条边,则该图至少有( )个顶点。

【精选资料】NOIP提高组复赛试题与简解转载

【精选资料】NOIP提高组复赛试题与简解转载

Day1铺地毯【问题描述】为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。

一共有n 张地毯,编号从1 到n。

现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。

注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

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

输入共 n+2 行。

第一行,一个整数 n,表示总共有n 张地毯。

接下来的 n 行中,第i+1 行表示编号i 的地毯的信息,包含四个正整数a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标(a,b)以及地毯在x轴和y 轴方向的长度。

第 n+2 行包含两个正整数x 和y,表示所求的地面的点的坐标(x,y)。

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

输出共 1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出-1。

【输入输出样例 1】【输入输出样例说明】如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点(2,2)的最上面一张地毯是3 号地毯。

【输入输出样例 2】【输入输出样例说明】如上图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,点(4,5)没有被地毯覆盖,所以输出-1。

【数据范围】对于 30%的数据,有n≤2;对于 50%的数据,0≤a, b, g, k≤100;对于 100%的数据,有0≤n≤10,000,0≤a, b, g, k≤100,000。

【一句话题意】给定n个按顺序覆盖的矩形,求某个点最上方的矩形编号。

【考察知识点】枚举【思路】好吧我承认看到图片的一瞬间想到过二维树状数组和二维线段树。

置答案ans=-1,按顺序枚举所有矩形,如果点在矩形内则更新ans。

注意题中给出的不是对角坐标,实际上是(a,b)与(a+g,b+k)。

NOIP2016提高组复赛试题(Day1+Day2)

NOIP2016提高组复赛试题(Day1+Day2)

第22 届全国青少年信息学奥林匹克联赛2016提高组(复赛)第一试竞赛时间:2016 年11 月19 日 8:30 ∼ 12:00提交源程序文件名编译选项注意事项:1. 文件名(程序名和输入输出文件名)必须使用英文小写。

2. 除非特殊说明,结果比较方式均为忽略行末空格及文末回车的全文比较。

3. 中函数()的返回值类型必须是,程序正常结束时的返回值必须是0。

4. 全国统一评测时采用的机器配置为: () x2 240 ,2.8,内存4G,上述时限以此配置为准。

5. 只提供格式附加样例文件。

6. 评测在下进行。

7. 编译时不打开任何优化选项。

玩具谜题()【问题描述】小南有一套可爱的玩具小人,它们各有不同的职业。

有一天,这些玩具小人把小南的眼镜藏了起来。

小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。

如下图:这时告诉小南一个谜题:“眼镜藏在我左数第3 个玩具小人的右数第1 个玩具小人的左数第2 个玩具小人那里。

”小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;而面向圈外的玩具小人,它的左边是逆时针方向,右边是顺时针方向。

小南一边艰难地辨认着玩具小人,一边数着:“朝内,左数第3 个是。

“朝外,右数第1 个是。

“朝外,左数第2 个是。

“所以眼镜藏在这里!”虽然成功找回了眼镜,但小南并没有放心。

如果下次有更多的玩具小人藏他的眼镜,或是谜题的长度更长,他可能就无法找到眼镜了。

所以小南希望你写程序帮他解决类似的谜题。

这样的谜题具体可以描述为:有n 个玩具小人围成一圈,己知它们的职业和朝向。

现在第 1个玩具小人告诉小南一个包含m 条指令的谜题,其中第i 条指令形如“左数/右数第个玩具小人”。

你需要输出依次数完这些指令后,到达的玩具小人的职业。

【输入格式】从文件中读入数据。

输入的第一行包含两个正整数,表示玩具小人的个数和指令的条数。

NOIP 2016 Day 1 题解 Sengxian's Blog

NOIP 2016 Day 1 题解  Sengxian's Blog

NOIP 2016 Day 1 题解Sengxian's Blog先声明一下,如果你是初学者,你可能会看不懂其中的一些东西,原因是你的知识点以及技巧没有跟上,我会尽量写得详细一点,如果还有不懂,欢迎留言。

玩具谜题toy知识点模拟分析可以发现,本题就是根据要求在环上顺时针或者逆时针走动,那么假设当前的位置是ppp,那么逆时针走xxx 个到达的位置是(p?1 x)modn 1(p - 1 x) \bmod n 1(p?1 x)modn 1,顺时针走xxx 个到达的位置是(p?1?x)modn 1(p - 1 - x) \bmod n 1(p?1?x)modn 1。

模拟每一次的指令,判断每次是走顺时针还是逆时针即可。

实现上要注意,C 中对于模运算的定义与数学中的模运算是不同的,我们知道在数学上amodb=a?b??ab?a \bmod b = a - b\cdot\lfloor \frac a b\rflooramodb=a?b???b??a???,问题就在于?ab?\lfloor\frac a b\rfloor??b??a??? 的计算上。

在大部分编译器中,两个int 相除,是直接丢弃小数位得到答案的,这就导致了在C 中两个int 相除并非总是得到?ab?\lfloor\frac a b\rfloor??b??a???(例如?32=?1\frac {-3} 2 = -1?2???3??=?1),所以aaa 为负数的情况下,取模会存在问题,amodba \bmod bamodb 不一定能够得到一个非负整数,但是我们可以保证这个数在(?∣b∣,∣b∣)(-\vert b\vert,\vert b\vert)(?∣b∣,∣b∣) 内,在所以实际需要取模的时候,采用((amodb) b)modb((a \bmod b) b) \bmod b((amodb)b)modb 来得到非负整数。

代码#includeusing namespace std;const int MAX_N = 100000 3, MAX_LEN = 10 3;int n, m, dir[MAX_N];char str[MAX_N][MAX_LEN];int main() {scanf('%d%d', &n, &m);for (int i = 0; i n; i)scanf('%d%s', dir i, str[i]);int pos = 0;for (int i = 0, d, a; i m; i) {scanf('%d%d', &d, &a);int dd = d ^ dir[pos];if (dd == 1) (pos = a) %= n;else (pos -= a) %= n;pos = (pos % n n) % n;}printf('%s\n', str[pos]);return 0;}天天爱跑步running考点DFS,LCA(最近公共祖先),差分标记,前缀和分析对于NOIP 初学者来说,这个题在考场上是比较没有办法A 掉的,但是这并不妨碍我们拿到暴力分。

NOIP2016提高组参考答案

NOIP2016提高组参考答案

shorter<higher previous[next[i]]:=previous[i] dist[1]:=0 previous[next[i]]=previous[i] dist[1]=0
dist[x]+weight[j]<dist[point[j]] visit[x]:=0 dist[x]+weight[j]=dist[point[j]] visit[point[j]:=1 visit[x]=0 dist[x]+weight[j]==dist[point[j]] visit[point[j]]=1
三、问题求解(共 2 题,每题 5 分,共计 10 分;每题全部答对得 5 分,没有部分分) 1. 2. 55 3
四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. 2. 6,5,4,3,2,1, YES,NO,YES,
3. 4.
5 2 5
五、完善程序(共计 28 分,以下各程序填空可能还有一些等价的写法,由各省赛区组织本省专家审定及 上机验证,可以不上报 CCF NOI 科学委员会复核) Pascal 语言 1 . (1) (2) (3) (4) (5) 2 . (1) (2) (3) (4) (5) next[rank[i]]:=rank[i+1] higher:=height[next[i]]-height[i] i<=j next[rank[i]]=rank[i+1] higher=height[next[i]]-height[i] C++语言 C 语言 分值 2 3 3 3 3 2 3 3 3 3
第二十二届全国青少年信息学奥林匹克联赛初赛 提高组参考答案
一、单项选择题(共 15 题,每题 1.5 分,共计 22.5 分) 1 2 3 4 D 9 B A 10 D B 11 B NhomakorabeaB 12 A

NOIP历年复赛提高组试题(2004-2013)

NOIP历年复赛提高组试题(2004-2013)

第十届全国信息学奥林匹克分区联赛(NOIP2004)复赛试题(提高组竞赛用时:3小时)1、津津的储蓄计划(Save.pas/dpr/c/cpp)【问题描述】津津的零花钱一直都是自己管理。

每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。

因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

例如11月初津津手中还有83元,妈妈给了津津300元。

津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。

到了11月月末,津津手中会剩下3元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。

有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。

如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。

如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

【输入文件】输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。

【输出文件】输出文件save.out包括一行,这一行只包含一个整数。

如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。

【样例输入1】29023028020030017034050908020060【样例输出1】-7【样例输入2】29023028020030017033050908020060【样例输出2】1580【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。

历届noip提高组复赛试题

历届noip提高组复赛试题

NOI’95 “同创杯”全国青少年信息学(计算机)奥林匹克竞赛分区联赛复赛试题(高中组)(上机编程,完成时间:210分钟)<1>编码问题:设有一个数组A:ARRAY[0..N-1] OF INTEGER;数组中存放的元素为0~N-1之间的整数,且A[i]≠A[j](当i≠j时)。

例如:N=6时,有:A=(4,3,0,5,1,2)此时,数组A的编码定义如下:A[0]的编码为0;A[i]的编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数(i=1,2,…,N-1)∴上面数组A的编码为:B=(0,0,0,3,1,2)程序要求解决以下问题:①给出数组A后,求出其编码。

②给出数组A的编码后,求出A中的原数据。

<2>灯的排列问题:设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……N k(k表示不同颜色灯的个数)。

放灯时要遵守下列规则:①同一种颜色的灯不能分开;②不同颜色的灯之间至少要有一个空位置。

例如:N=8(格子数)R=2(红灯数)B=3(蓝灯数)放置的方法有:R-B顺序B-R顺序放置的总数为12种。

数据输入的方式为:NP1(颜色,为一个字母)N1(灯的数量)P2 N2……Q(结束标记,Q本身不是灯的颜色)程序要求:求出一种顺序的排列方案及排列总数。

<3> 设有一个四层的积木块,1~4层积木块的数量依次为:5,6,7,8如下图所示放置:其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。

计算的方法是:第三层的某个数据A是由第四层相邻的两个数据B,C经过某种计算后产生的:计算所用到的计算符为:+,-,⨯,且无优先级之分(自左向右计算),运算符最多为2个。

如:3+4⨯5=35 5⨯4+3=23可以看出,上图中的第三层的数据是由第四层的数据用以下计算公式计算出来的:A=B⨯C+B也就是:8=2⨯3+2,15=3⨯4+3,……14=2⨯6+2程序要求:给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,并输出整个完整的积木图及计算公式。

2016NOIP普与组复赛试题

2016NOIP普与组复赛试题

P1909 买铅笔题目描述P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。

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

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

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

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

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

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

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

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

输入输出样例输入样例#1:输出样例#1:输入样例#2:输出样例#2:输入样例#3:输出样例#3:说明铅笔的三种包装分别是:•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—定是每种包装铅笔数量的整倍数(这意味着一定可以不用多买铅笔)。

P2010 回文日期题目描述在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。

noip2017提高组试题(day1+day2)-Word版

noip2017提高组试题(day1+day2)-Word版

noip2017提高组试题(day1+day2)-Word版全国信息学奥林匹克联赛(2017)复赛提高组 1(请选手务必仔细阅读本页内容)一.题目概况注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

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

3、全国统一评测时采用的机器配置为: () x2 240 ,2.8,内存 4G,上述时限以此配置为准。

4、只提供格式附加样例文件。

5、提交的程序代码文件的放置位置请参照各省的具体要求。

6、特别提醒:评测在当前最新公布的下进行,各语言的编译器版本以其为准。

【问题描述】1.小凯的疑惑()小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。

每种金币小凯都有无数个。

在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。

现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。

【输入格式】输入文件名为。

输入数据仅一行,包含两个正整数a 和b,它们之间用一个空格隔开,表示小凯手中金币的面值。

【输出格式】输出文件名为。

输出文件仅一行,一个正整数N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。

【输入输出样例 1】见选手目录下的 1 和 1。

【输入输出样例 1 说明】小凯手中有面值为3 和7 的金币无数个,在不找零的前提下无法准确支付价值为1、2、4、5、8、11 的物品,其中最贵的物品价值为11,比11 贵的物品都能买到,比如:12 = 3 * 4 + 7 * 013 = 3 * 2 + 7 * 114 = 3 * 0 + 7 * 215 = 3 * 5 + 7 * 0……【输入输出样例 2】见选手目录下的 2 和 2。

【数据规模与约定】对于 30%的数据:1 ≤ a,b ≤ 50。

对于 60%的数据:1 ≤ a,b ≤ 10,000。

对于 100%的数据:1 ≤ a,b ≤ 1,000,000,000。

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

第22 届全国青少年信息学奥林匹克联赛CCF-NOIP-2016提高组(复赛)第一试竞赛时间:2016 年11 月19 日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. 编译时不打开任何优化选项。

玩具谜题(toy)【问题描述】小南有一套可爱的玩具小人,它们各有不同的职业。

有一天,这些玩具小人把小南的眼镜藏了起来。

小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。

如下图:这时singer 告诉小南一个谜题:“眼镜藏在我左数第3 个玩具小人的右数第1 个玩具小人的左数第2 个玩具小人那里。

”小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;而面向圈外的玩具小人,它的左边是逆时针方向,右边是顺时针方向。

小南一边艰难地辨认着玩具小人,一边数着:“singer 朝内,左数第3 个是archer。

“archer 朝外,右数第1 个是thinker。

“thinker 朝外,左数第2 个是writer。

“所以眼镜藏在writer 这里!”虽然成功找回了眼镜,但小南并没有放心。

如果下次有更多的玩具小人藏他的眼镜,或是谜题的长度更长,他可能就无法找到眼镜了。

所以小南希望你写程序帮他解决类似的谜题。

这样的谜题具体可以描述为:有n 个玩具小人围成一圈,己知它们的职业和朝向。

现在第1 个玩具小人告诉小南一个包含m 条指令的谜题,其中第i 条指令形如“左数/右数第s i 个玩具小人”。

你需要输出依次数完这些指令后,到达的玩具小人的职业。

【输入格式】从文件toy.in 中读入数据。

输入的第一行包含两个正整数n,m ,表示玩具小人的个数和指令的条数。

接下来n 行,每行包含一个整数和一个字符串,以逆时针为顺序给出每个玩具小人的朝向和职业。

其中0 表示朝向圈内,1 表示朝向圈外。

保证不会出现其他的数。

字符串长度不超过10 且仅由小写字母构成,字符串不为空,并且字符串两两不同。

整数和字符串之间用一个空格隔开。

接下来m 行,其中第i 行包含两个整数a i, s i ,表示第i 条指令。

若a i = 0 ,表示向左数s i 个人;若a i = 1 ,表示向右数s i 个人。

保证a i 不会出现其他的数,1 ≤s i < n。

【输出格式】输出到文件toy.out 中。

输出一个字符串,表示从第一个读入的小人开始,依次数完m条指令后到达的小人的职业。

【样例 1 输入】7 30 singer0 reader0 mengbier1 thinker1 archer0 writer1 mogician0 31 10 2【样例 1 输出】writer【样例 1 说明】这组数据就是【题目描述】中提到的例子。

【样例 2 输入】10 101 c0 r0 p1 d1 e1 m1 t1 y1 u0 v1 71 11 40 50 30 11 61 20 80 4【样例 2 输出】y【子任务】子任务会给出部分测试数据的特点。

如果你在解决题目中遇到了困难,可以尝试只解决一部分测试数据。

每个测试点的数据规模及特点如下表:其中一些简写的列意义如下:●全朝内:若为“√”,表示该测试点保证所有的玩具小人都朝向圈内;●全左数:若为“√”,表示该测试点保证所有的指令都向左数,即对任意的1 ≤ i ≤ m,a i = 0;●s i = 1 :若为“√”,表示该测试点保证所有的指令都只数1个,即对任意的1 ≤ i ≤ m,s i= 1;●职业长度为1:若为“√”,表示该测试点保证所有玩具小人的职业一定是一个长度为 1 的字符串。

天天爱跑步(running)【问题描述】小C 同学认为跑步非常有趣,于是决定制作一款叫做《天天爱跑步》的游戏。

《天天爱跑步》是一个养成类游戏,需要玩家每天按时上线,完成打卡任务。

这个游戏的地图可以看作一棵包含n 个结点和n −1 条边的树,每条边连接两个结点,且任意两个结点存在一条路径互相可达。

树上结点编号为从1 到n 的连续正整数。

现在有m 个玩家,第i 个玩家的起点为S i,终点为T i。

每天打卡任务开始时,所有玩家在第0 秒同时从自己的起点出发,以每秒跑一条边的速度,不间断地沿着最短路径向着自己的终点跑去,跑到终点后该玩家就算完成了打卡任务。

(由于地图是一棵树,所以每个人的路径是唯一的)小C 想知道游戏的活跃度,所以在每个结点上都放置了一个观察员。

在结点j 的观察员会选择在第W j秒观察玩家,一个玩家能被这个观察员观察到当且仅当该玩家在第W j秒也正好到达了结点j 。

小C 想知道每个观察员会观察到多少人?注意:我们认为一个玩家到达自己的终点后该玩家就会结束游戏,他不能等待一段时间后再被观察员观察到。

即对于把结点j 作为终点的玩家:若他在第W j秒前到达终点,则在结点j 的观察员不能观察到该玩家;若他正好在第W j秒到达终点,则在结点j 的观察员可以观察到这个玩家。

【输入格式】从文件running.in 中读入数据。

第一行有两个整数n 和m 。

其中n 代表树的结点数量,同时也是观察员的数量,m 代表玩家的数量。

接下来n −1 行每行两个整数u 和v ,表示结点u 到结点v 有一条边。

接下来一行n 个整数,其中第j 个整数为W j,表示结点j 出现观察员的时间。

接下来m 行,每行两个整数S i和T i,表示一个玩家的起点和终点。

对于所有的数据,保证1 ≤ S i , T i≤ n , 0 ≤ W j≤ n。

【输出格式】输出到文件running.out 中。

输出1 行n 个整数,第j 个整数表示结点j 的观察员可以观察到多少人。

【样例 1 输入】6 32 31 21 44 54 60 2 5 1 2 31 51 32 6【样例 1 输出】2 0 0 1 1 1【样例 1 说明】对于1 号点,W1= 0 ,故只有起点为1 号点的玩家才会被观察到,所以玩家1 和玩家2 被观察到,共2 人被观察到。

对于2号点,没有玩家在第2秒时在此结点,共0人被观察到。

对于3号点,没有玩家在第5秒时在此结点,共0人被观察到。

对于4号点,玩家1被观察到,共1人被观察到。

对于5号点,玩家1被观察到,共1人被观察到。

对于6号点,玩家3被观察到,共1人被观察到。

【样例 2 输入】5 31 22 32 41 50 1 0 3 03 11 45 5【样例 2 输出】1 2 1 0 1【子任务】每个测试点的数据规模及特点如下表所示。

提示:数据范围的个位上的数字可以帮助判断是哪一种数据类型。

【提示】如果你的程序需要用到较大的栈空间(这通常意味着需要较深层数的递归),请务必仔细阅读选手目录下的文档running/stack.pdf ,以了解在最终评测时栈空间的限制与在当前工作环境下调整栈空间限制的方法。

换教室(classroom)【问题描述】对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。

在可以选择的课程中,有2n节课程安排在n个时间段上。

在第i( 1 ≤i ≤n )个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室c i上课,而另一节课程在教室d i进行。

在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的n 节安排好的课程。

如果学生想更换第i 节课程的教室,则需要提出申请。

若申请通过,学生就可以在第i 个时间段去教室d i上课,否则仍然在教室d i上课。

由于更换教室的需求太多,申请不一定能获得通过。

通过计算,牛牛发现申请更换第i节课程的教室时,申请被通过的概率是一个己知的实数k i,并且对于不同课程的申请,被通过的概率是互相独立的。

学校规定,所有的申请只能在学期开始前一次性提交,并且每个人只能选择至多m 节课程进行申请。

这意味着牛牛必须一次性决定是否申请更换每节课的教室,而不能根据某些课程的申请结果来决定其他课程是否申请;牛牛可以申请自己最希望更换教室的m 门课程,也可以不用完这m 个申请的机会,甚至可以一门课程都不申请。

因为不同的课程可能会被安排在不同的教室进行,所以牛牛需要利用课间时间从一间教室赶到另一间教室。

牛牛所在的大学有v 个教室,有e 条道路。

每条道路连接两间教室,并且是可以双向通行的。

由于道路的长度和拥堵程度不同,通过不同的道路耗费的体力可能会有所不同。

当第i (1 ≤i ≤n −1 )节课结束后,牛牛就会从这节课的教室出发,选择一条耗费体力最少的路径前往下一节课的教室。

现在牛牛想知道,申请哪几门课程可以使他因在教室间移动耗费的体力值的总和的期望值最小,请你帮他求出这个最小值。

现在牛牛想知道,申请哪几门课程可以使他因在教室间移动耗费的体力值的总和的期望值最小,请你帮他求出这个最小值。

【输入格式】从文件classroom.in 中读入数据。

第一行四个整数n, m, v, e 。

n 表示这个学期内的时间段的数量;m 表示牛牛最多可以申请更换多少节课程的教室;v 表示牛牛学校里教室的数量;e 表示牛牛的学校里道路的数量。

第二行n 个正整数,第i(1 ≤i ≤n )个正整数表示c i,即第i个时间段牛牛被安排上课的教室;保证1 ≤c i≤v 。

第三行n 个正整数,第i (1 ≤i ≤n )个正整数表示d i,即第i 个时间段另一间上同样课程的教室;保证1 ≤d i≤v 。

第四行n 个实数,第i (1 ≤i ≤n )个实数表示k i,即牛牛申请在第i 个时间段更换教室获得通过的概率。

保证0 ≤k i≤1 。

接下来e 行,每行三个正整数a j,b j,w j,表示有一条双向道路连接教室a j,b j,通过这条道路需要耗费的体力值是w j;保证1 ≤a j,b j≤v ,1 ≤w j≤100 。

保证1 ≤n ≤2000 ,0 ≤m ≤ 2000 ,1 ≤v ≤300 ,0 ≤e ≤90000 。

保证通过学校里的道路,从任何一间教室出发,都能到达其他所有的教室。

保证输入的实数最多包含3位小数。

【输出格式】输出到文件classroom.out 中。

输出一行,包含一个实数,四舍五入精确到小数点后恰好 2 位,表示答案。

相关文档
最新文档