NOIP2012提高组复赛试题

合集下载

NOIP2012提高组day1

NOIP2012提高组day1

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

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

3、全国统一评测时采用的机器配置为:CPU Intel Core2 Quad Q8200 2.33GHz, 内存2G,上述时限以此配置为准。

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

1.Vigenère密码(vigenere.cpp/c/pas)【问题描述】16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码。

Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。

在密码学中,我们称需要加密的信息为明文,用M表示;称加密后的信息为密文,用C表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。

在Vigenère密码中,密钥k是一个字母串,k=k1k2…k n。

当明文M=m1m2…m n时,得到的密文C=c1c2…c n,其中c i=m i®k i,运算®的规则如下表所示:®【输入】输入文件名为vigenere.in。

输入共2行。

第一行为一个字符串,表示密钥k,长度不超过100,其中仅包含大小写字母。

第二行为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。

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

输出共1行,一个字符串,表示输入密钥和密文所对应的明文。

对于100%的数据,输入的密钥的长度不超过100,输入的密文的长度不超过1000,且都仅包含英文字母。

2.国王游戏(game.cpp/c/pas)【问题描述】恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。

NOIP 2012复赛 模拟练习卷(一)

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)。

NOIP2012提高组复赛试题

NOIP2012提高组复赛试题

全国信息学奥林匹克联赛(2012)复赛提高组22 . 1 •同余方程〖问题描述〗求关于的同余方程三1 (句的最小正整数解。

【输入〗输入文件为输入只有一行,包含两个正整数用一个空格隔开【输出〗输出文件为输出只有一行,包含一个正整数血即最小正整数解。

输入数据保证一定有解。

『输入输出样例〗『数据范围〗对于40%的数据,2L000:对于60%的数据,2 50 , 000, 000:对于100%的数据,2, 2, 000, 000, 0002 •借教室(.)【问题描述〗在大学期间,经常需要租借教室。

大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。

教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。

面对海量租借教室的信息,我们自然希望编程解决这个问题。

我们需要处理接下来n天的借教室信息,其中第i天学校有个教室可供租借。

共有m份订单,每份订单用三个正整数描述,分别为d],斗t},表示某租借者需要从第丬天到第t]天租借教室(包括第丬天和第t)天),每天需要租借个教室。

我们假定,租借者对教室的大小、地点没有要求。

即对于每份订单,我们只需要每天提供d]个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。

借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。

如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。

这里的无法满足指从第丬天到第t)天中有至少一天剩余的教室数量不足d)个。

现在我们需要知道,是否会有订单无法完全满足。

如果有,需要通知哪一个申请人修改输入〗输入文件为第一行包含两个正整数n,m,表示天数和订单的数量。

第二行包含n个正整数,其中第i个数为,表示第i天可用于租借的教室数量。

接下来有m行,每行包含三个正整数],t],表示租借的数量,租借开始、结束分别在第几天。

每行相邻的两个数之间均用一个空格隔开。

天数与订单均用从1开始的整数编号。

NOIP2012提高组初赛试题与答案

NOIP2012提高组初赛试题与答案
CCF NOIP2012 初赛 提高组 C 8
s3[tmpLen+1] = '\0'; if (right[x] >= 0) check(right[x]); } void dfs(int x, int th) { if (th == n) {
s3[0] = '\0'; check(0); if (strcmp(s2, s3) == 0) {
文件交互的一种软件。
A. 资源管理器
B. 浏览器
C. 电子邮件
D. 编译器
3. 目前个人电脑的( )市场占有率最靠前的厂商包括 Intel、AMD 等公司。
A. 显示器
B. CPU
C. 内存
D. 鼠标
4. 无论是 TCP/IP 模型还是 OSI 模型,都可以视为网络的分层模型,每个网络协议都会被
归入某一层中。如果用现实生活中的例子来比喻这些“层”,以下最恰当的是( )。
ans = 0; calc(0, 1); printf("%d\n", ans); } return; } if (left[x] == -1 && right[x] == -1) { left[x] = th; father[th] = x; dfs(th, th+1); father[th] = -1; left[x] = -1; } if (right[x] == -1) { right[x] = th; father[th] = x; dfs(th, th+1); father[th] = -1; right[x] = -1; } if (father[x] >= 0) dfs(father[x], th); } int main() {

NOIP提高组初赛历年试题及答案选择题篇

NOIP提高组初赛历年试题及答案选择题篇

NOIP提高组初赛历年试题及答案选择题篇单项选择题(共10-15题,每题1.5分,共计15-22.5分。

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

)注:答案在末尾NOIP2011-1.在二进制下,1011001+()=1100110。

同普及组NOIP2011-1 A.1011 B.1101 C.1010 D.1111NOIP2011-2.字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的()。

A.66B.5AC.50D.视具体的计算机而定NOIP2011-3.下图是一棵二叉树,它的先序遍历是()。

A.ABDEFCB.DBEFACC.DFEBCAD.ABCDEFNOIP2011-4.寄存器是()的重要组成部分。

同普及组NOIP2011-6A.硬盘B.高速缓存C.内存D.中央处理器(CPU)NOIP2011-5.广度优先搜索时,需要用到的数据结构是()。

同普及组NOIP2011-11A.链表B.队列C.栈D.散列表NOIP2011-6.在使用高级语言编写程序时,一般提到的“空间复杂度”中的空间是指()。

同普及组NOIP2011-12A.程序运行时理论上所占的内存空间B.程序运行时理论上所占的数组空间C.程序运行时理论上所占的硬盘空间D.程序源文件理论上所占的硬盘空间NOIP2011-7.应用快速排序的分治思想,可以实现一个求第K大数的程序。

假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为()。

A.O(n2) B.O(n log n) C.O(n) D.O(1)NOIP2011-8.为解决web应用中的不兼容问题,保障信息的顺利流通,()制定了一系列标准,涉及HTML、XML、CSS等,并建议开发者遵循。

A.微软B.美国计算机协会(ACM)C.联合国教科文组织D.万维网联盟(W3C)NOIP2011-9.体育课的铃声响了,同学们都陆续的奔向操场,按老师的要求从高到低站成一排。

2012noip提高组初赛试题

2012noip提高组初赛试题

三、问题求解(共 2 题,每题 5 分,共计 10 分) 1. 2. 256 5536
四、阅读程序写结果(共 4 题,每题 8 分,其中第 3 题的 2 个小题各 4 分,共计 32 分) 1. 2. 3. 4. 41 16 (1)7 (2)2004 55 (4 分) (4 分)
五、完善程序(第 1 题第 2 空 3 分,其余每空 2.5 分,共计 28 分)以下各程序填空可能还有一些等价的 写法,各省赛区可请本省专家审定和上机验证,可以不上报 CCF NOI 科学委员会检查。 Pascal 语言 1 ① ② ③ ④ ⑤ 2 ① ② ③ ④ ⑤ ⑥ next := (k mod c) + 1 s[n] := q[tail] q[head] q[head] q[tail] next(head) false used[data[i]] := false used[data[i]] = false j n break return (k % c) + 1 s[n] = q[tail] C++语言 C 语言 0 used[data[i]] = 0
其中,Pascal 语言和 C++语言中的 false 可以用 0 代替;第 2 题第 1 空中的圆括号可以省略。
第十八届全国青少年信息学奥林匹克联赛初赛 提高组参考答案
一、单项选择题(共 10 题,每题 1.5 分,共计 15 分) 1 A 2 B 3 B 4 A 5 D 6 A 7 A 8 D 9 A 10 B
二ቤተ መጻሕፍቲ ባይዱ不定项选择题(共 10 题,每题 1.5 分,共计 15 分,多选或少选均不得分) 1 A 6 CD 2 AD 7 AB 3 AD 8 A 4 BD 9 CD 5 ABC 10 BD

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

NOIP2012普及组复赛试题及解答

NOIP2012普及组复赛试题及解答

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

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

3、全国统一评测时采用的机器配置为:CPU Intel Core2 Quad Q8200 2.33GHz,内存2G,上述时限以此配置为准。

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

【问题描述】1.质因数分解(prime.cpp/c/pas)已知正整数n 是两个不同的质数的乘积,试求出较大的那个质数。

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

输入只有一行,包含一个正整数n。

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

输出只有一行,包含一个正整数p,即较大的那个质数。

【输入输出样例】【数据范围】对于60%的数据,6 ≤ n ≤ 1000。

对于100%的数据,6 ≤ n ≤ 2*109。

[解题思路] 1.根据数据范围,可以判断数据范围为长整型(long=4 bytes)补充数据类型:整型char 1byteInt 4bytesShort 2bytesLong 4bytesLong long 8bytes程序:#include <stdio.h>#include <math.h>#include <string.h>int a[44722]={0}; //用于筛选法求素数,有题目数据范围可知,涉及到的最大素数一定小于44722 int b[10000]={0}; //用于存储素数,b[i]用于存储第i+1个素数int count=0;void calculatePrime(void) //筛选法求素数,主要考虑到时间效率,所以用此法求素数{int i,j;memset(a,-1,sizeof(a));memset(b,0,sizeof(b));a[0]=a[1]=0;for (i=2;i<50000;i++){if (a[i]==-1){for (j=i+i;j<50000;j+=i){a[j]=0;}}}for (i=2;i<50000;i++){if (a[i]==-1){b[count++]=i;}}}int main(void){int i,n,squre,temp;FILE *inputfp; FILE*outputfp;calculatePrime();inputfp=fopen("prime.in.txt","r");outputfp=fopen("prime.out.txt","w");while (fscanf(inputfp,"%d",&n)!=EOF){printf("%d",n);squre=(int)sqrt(n);for (i=0;i<=squre&&i<count;i++){if (n%b[i]==0) //核心:两个素数的积一定为合适,且只有3个因子{temp=n/b[i]; break;}}fprintf(outputfp,"%d\n",temp);}fclose(inputfp);fclose(outputfp);return 0;}2.寻宝(treasure.cpp/c/pas)传说很遥远的藏宝楼顶层藏着诱人的宝藏。

2012十八届noip提高组题目及答案

2012十八届noip提高组题目及答案

第十八届全国青少年信息学奥林匹克联赛初赛(提高组Pascal语言试题)一、单项选择题(共10题,每题1.5分,共计15分;每题有且仅有一个正确选项)1.目前计算机芯片(集成电路)制造的主要原料是(),它是一种可以在沙子中提炼出的物质。

A.硅B.铜C.锗D.铝2.()是主要用于显示网页服务器或者文件系统的HTML文件的内容,并让用户与这些文件交互的一种软件。

A.资源管理器B.浏览器C.电子邮件D.编译器3.目前个人电脑的()市场占有率最靠前的厂商包括Intel、AMD等公司。

A.显示器B.CPU C.内存D.鼠标4.无论是TCP/IP模型还是OSI模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。

如果用现实生活中的例子来比喻这些“层”,以下最恰当的是()。

A.中国公司的经理与斯洛伐克公司的经理交互商业文件B.军队发布命令C.国际会议中,每个人都与他国地位对等的人直接进行会谈D.体育比赛中,每一级比赛的优胜者晋级上一级比赛5.如里不在快速排序中引入随机化,有可能导致的后果是()。

A.数组访问越界B.陷入死循环C.排序结果错误D.排序时间退化为平方级6.1946年诞生于美国宾夕法尼亚大学的ENIAC属于()计算机。

A.电子管B.晶体管C.集成电路D.超大规模集成电路7.在程序运行过程中,如果递归调用的层数过多,会因为()引发错误。

A.系统分配的栈空间溢出B.系统分配的堆空间溢出C .系统分配的队列空间溢出D .系统分配的链表空间溢出8.地址总线的位数决定了CPU 可直接寻址的内存空间大小,例如地址总线为16位,其最大的可寻址空间为64KB 。

如果地址总线是32位,则理论上最大可寻址的内存空间为( )。

A .128KBB .1MBC .1GBD .4GB9.以下不属于3G (第三代移动通信技术)标准的是( )。

A .GSMB .TD-SCDMAC .CDMA2000D .WCDMA10.仿生学的问世开辟了独特的科学技术发展道路。

CCF全国信息学奥林匹克联赛(NOIP2012)复赛

CCF全国信息学奥林匹克联赛(NOIP2012)复赛

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

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

3、全国统一评测时采用的机器配置为:CPU Intel Core2 Quad Q8200 2.33GHz,内存2G,上述时限以此配置为准。

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

【问题描述】1.质因数分解(prime.cpp/c/pas)已知正整数n 是两个不同的质数的乘积,试求出较大的那个质数。

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

输入只有一行,包含一个正整数n。

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

输出只有一行,包含一个正整数p,即较大的那个质数。

【输入输出样例】【数据范围】对于60%的数据,6 ≤ n≤ 1000。

对于100%的数据,6 ≤n ≤ 2*109。

【问题描述】2.寻宝(treasure.cpp/c/pas)传说很遥远的藏宝楼顶层藏着诱人的宝藏。

小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书。

说明书的内容如下:藏宝楼共有N+1 层,最上面一层是顶层,顶层有一个房间里面藏着宝藏。

除了顶层外,藏宝楼另有N 层,每层M 个房间,这M 个房间围成一圈并按逆时针方向依次编号为0,…,M-1。

其中一些房间有通往上一层的楼梯,每层楼的楼梯设计可能不同。

每个房间里有一个指示牌,指示牌上有一个数字x,表示从这个房间开始按逆时针方向选择第x 个有楼梯的房间(假定该房间的编号为k),从该房间上楼,上楼后到达上一层的k 号房间。

比如当前房间的指示牌上写着2,则按逆时针方向开始尝试,找到第2 个有楼梯的房间,从该房间上楼。

如果当前房间本身就有楼梯通向上层,该房间作为第一个有楼梯的房间。

寻宝说明书的最后用红色大号字体写着:“寻宝须知:帮助你找到每层上楼房间的指示牌上的数字(即每层第一个进入的房间内指示牌上的数字)总和为打开宝箱的密钥”。

【精选资料】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)。

NOIP2012普及组复赛试题

NOIP2012普及组复赛试题

T1:质因数分解(prime.cpp/c/pas)【问题描述】已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。

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

输入只有一行,包含一个正整数n。

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

输出只有一行,包含一个正整数p,即较大的那个质数。

【数据范围】对于60%的数据,6 ≤ n ≤ 1000。

对于100%的数据,6 ≤ n ≤ 2*109。

【问题描述】传说很遥远的藏宝楼顶层藏着诱人的宝藏。

小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书。

说明书的内容如下:藏宝楼共有N+1层,最上面一层是顶层,顶层有一个房间里面藏着宝藏。

除了顶层外,藏宝楼另有N层,每层M个房间,这M个房间围成一圈并按逆时针方向依次编号为0,…,M-1。

其中一些房间有通往上一层的楼梯,每层楼的楼梯设计可能不同。

每个房间里有一个指示牌,指示牌上有一个数字x,表示从这个房间开始按逆时针方向选择第x个有楼梯的房间(假定该房间的编号为k),从该房间上楼,上楼后到达上一层的k号房间。

比如当前房间的指示牌上写着2,则按逆时针方向开始尝试,找到第2个有楼梯的房间,从该房间上楼。

如果当前房间本身就有楼梯通向上层,该房间作为第一个有楼梯的房间。

寻宝说明书的最后用红色大号字体写着:“寻宝须知:帮助你找到每层上楼房间的指示牌上的数字(即每层第一个进入的房间内指示牌上的数字)总和为打开宝箱的密钥”。

请帮助小明算出这个打开宝箱的密钥。

【输入】输入文件为treasure.in。

第一行2个整数N 和M ,之间用一个空格隔开。

N 表示除了顶层外藏宝楼共N 层楼,M 表示除顶层外每层楼有M 个房间。

接下来N*M 行,每行两个整数,之间用一个空格隔开,每行描述一个房间内的情况,其中第(i-1)*M+j 行表示第i 层j-1号房间的情况(i=1, 2, …, N ;j=1, 2, … ,M )。

2012十八届noip提高组题目及答案-推荐下载

2012十八届noip提高组题目及答案-推荐下载

p,q,r 如何取值,两个布尔表达式的值总是相同,则称它们等价。例如(p∨q)∨r 和 p∨(q∨r)等价,p∨¬p 和 q∨¬q 也等价;而 p∨q 和 p∧q
不等价。那么两两不等价的布尔表达式最多有
个。
2. 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图 1 有 5 个不同的独立集(1 个双点集合,3 个单点集合、1 个空集),
C. 国际会议中,每个人都与他国地位对等的人直接进行会谈
D. 体育比赛中,每一级比赛的优胜者晋级上一级比赛
5.如里不在快速排序中引入随机化,有可能导致的后果是( )。
A.数组访问越界
B.陷入死循环
C.排序结果错误
D.排序时间退化为平方级
6.1946 年诞生于美国宾夕法尼亚大学的 ENIAC 属于( )计算机。
readln(n); ans := 0; for i:=1 to n do
if gcd(n,i)=i then ans := ans + 1;
writeln(ans); end. 输入:120 输出:_____________ 3. var
图 2 有 14 个不同的独立集。那么图 3 有
个不同的独立集。
三、阅读程序写结果。(共 4 题,每题 8 分,共计 32 分)
1. var n,i,temp,sum:integer; a :array[1..100] of integer;
begin readln(n); for i:=1 to n do read(a[i]); for i:=1 to n-1 do if a[i]>a[i+1] then begin temp := a[i]; a[i] := a[i+1]; a[i+1] := temp; end; for i:=n downto 2 do if a[i]<a[i-1] then begin temp := a[i]; a[i] := a[i-1]; a[i-1] := temp; end; sum := 0; for i:=2 to n-1 do inc(sum,a[i]); writeln(sum div (n-2));

NOIP 2012复赛 模拟练习卷(一)

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历年复赛提高组试题(2004-2013)

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】290230908020060【样例输出2】15802、合并果子(fruit.pas/dpr/c/cpp)【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。

NOIP2012提高组复赛试题

NOIP2012提高组复赛试题

day1 T1:Vigenère 密码(vigenere.cpp/c/pas)【问题描述】16世纪法国外交家Blaise de Vigenère 设计了一种多表密码加密算法——Vigenère 密码。

Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。

在密码学中,我们称需要加密的信息为明文,用M 表示;称加密后的信息为密文,用C 表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k 。

在Vigenère 密码中,密钥k 是一个字母串,k=k 1k 2…k n 。

当明文M=m 1m 2…m n 时,得到的密文C=c 1c 2…c n ,其中c i =m i ®k i ,运算®的规则如下表所示:【输入】输入文件名为vigenere.in 。

输入共2行。

第一行为一个字符串,表示密钥k ,长度不超过100,其中仅包含大小写字母。

第二行为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。

®【输出】输出文件名为vigenere.out。

输出共1行,一个字符串,表示输入密钥和密文所对应的明文。

对于100%的数据,输入的密钥的长度不超过100,输入的密文的长度不超过1000,且都仅包含英文字母。

day1 T2:国王游戏(game.cpp/c/pas)【问题描述】恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。

首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。

然后,让这n位大臣排成一排,国王站在队伍的最前面。

排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。

国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。

NOIP历年复赛提高组试题.

NOIP历年复赛提高组试题.

第十届全国信息学奥林匹克分区联赛(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【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。

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

全国信息学奥林匹克联赛(2012)复赛提高组22. 1 ·同余方程〖问题描述〗求关于的同余方程三1 (句的最小正整数解。

输入〗输入文件为输入只有一行,包含两个正整数用一个空格隔开输出〗输出文件为输出只有一行,包含一个正整数№即最小正整数解。

输入数据保证一定有解。

〖输入输出样例〗对于40%的数据,2L000:对于60%的数据,2 50,000,000:对于100%的数据,2,2,000,000,000。

2 ·借教室 (. )问题描述〗在大学期间,经常需要租借教室。

大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。

教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。

面对海量租借教室的信息,我们自然希望编程解决这个问题。

我们需要处理接下来n天的借教室信息,其中第i天学校有个教室可供租借。

共有m份订单,每份订单用三个正整数描述,分别为d],斗t},表示某租借者需要从第丬天到第t]天租借教室(包括第丬天和第t)天),每天需要租借个教室。

我们假定,租借者对教室的大小、地点没有要求。

即对于每份订单,我们只需要每天提供d]个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。

借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。

如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。

这里的无法满足指从第丬天到第t)天中有至少一天剩余的教室数量不足d)个。

现在我们需要知道,是否会有订单无法完全满足。

如果有,需要通知哪一个申请人修改输入〗输入文件为第一行包含两个正整数n,m,表示天数和订单的数量。

第二行包含n个正整数,其中第i个数为,表示第i天可用于租借的教室数量。

接下来有m行,每行包含三个正整数],t],表示租借的数量,租借开始、结束分别在第几天。

每行相邻的两个数之间均用一个空格隔开。

天数与订单均用从1开始的整数编号。

〖输出〗输出文件为如果所有订单均可满足,则输出只有一行,包含一个整数0。

否则(订单无法完全满足)输出两行,第一行输出一个负整数一1 ,第二行输出需要修改订单的申请人编号。

〖输入输出样例〗第1份订单满足后,4天剩余的教室数分别为0,3,2,3。

第2份订单要求第2天到第4天每天提供3个教室,而第3天剩余的教室数为2,因此无法满足。

分配停止,通知第2个申请人修改订单。

〖数据范围〗对于10%的数据,有1孓孓10;对于30%的数据,有1孓孓1000;对于70%的数据,有1孓孓105;对于100%的数据,有1孓n,m孓106,0孓,孓109,1 < < <3 ·疫情控制 (.〖问题描述〗H国有n个城市,这n个城市用条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点。

H国的首都爆发了一种危害性极高的传染病。

当局为了控制疫清,不让疫情扩散到边境城市(叶子节点所表示的城市),决定动用军队在一些城市建立检查点,使得从首都到边境城市的每一条路径上都至少有一个检查点,边境城市也可以建立检查点。

但特别要注意的是,首都是不能建立检查点的。

现在,在H国的一些城市中已经驻扎有军队,且一个城市可以驻扎多个军队。

一支军队可以在有道路连接的城市间移动,并在除首都以外的任意一个城市建立检查点,且只能在一个城市建立检查点。

一支军队经过一条道路从一个城市移动到另一个城市所需要的时间等于道路的长度(单位:小时)。

请问最少需要多少个小时才能控制疫情。

注意:不同的军队可以同时移动。

〖输入〗输入文件名为 . 第一行一个整数n,表示城市个数。

接下来的n.1行,每行3个整数,u、v、w,每两个整数之间用一个空格隔开,表示从城市u到城市v有一条长为w的道路。

数据保证输入的是一棵树,且根节点编号为1。

接下来一行一个整数m,表示军队个数。

接下来一行m个整数,每两个整数之间用一个空格隔开,分别表示这m个军队所驻扎的城市的编号。

〖输出〗输出文件为b工共一行,包含一个整数,表示控制疫情所需要的最少时间。

如果无法控制疫情则输出.1。

〖输入输出样例〗第一支军队在2号点设立检查点,第二支军队从2号点移动到3号点设立检查点,所需时间为3个小时。

〖数据范围〗保证军队不会驻扎在首都。

对于20%的数据,荃10;对于40%的数据,2囟50,()w < 105;对于60%的数据,2 n 1000,0<w < 106:对于80%的数据,2 n引0,000;对于100%的数据,2 n n 50,000,()w < 109全国信息学奥林匹克联赛(2012)复赛提高组 11.è 密码()【问题描述】16 世纪法国外交家è 设计了一种多表密码加密算法——è密码。

è 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。

在密码学中,我们称需要加密的信息为明文,用 M 表示;称加密后的信息为C 表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为 k。

在è 密码中,密钥 k是一个字母串,1k2…。

当明文1m2…时,得到的密文1c2…,其中®,运算®的规则如下表所示:®è 加密在操作时需要注意:1. ®运算忽略参与运算的字母的大小写,并保持字母在明文 M中的大小写形式;2. 当明文 M 的长度大于密钥 k 的长度时,将密钥 k 重复使用。

例如,明文,密钥时,密文。

【输入】输入文件名为。

输入共 2 行。

第一行为一个字符串,表示密钥 k,长度不超过 100,其中仅包含大小写字母。

第二行为一个字符串,表示经加密后的密文,长度不超过 1000,其中仅包含大小写字母。

【输出】输出文件名为。

输出共 1 行,一个字符串,表示输入密钥和密文所对应的明文。

【输入输出样例】对于 100%的数据,输入的密钥的长度不超过 100,输入的密文的长度不超过 1000,且都仅包含英文字母。

3.国王游戏()【问题描述】恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。

首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。

然后,让这 n 位大臣排成一排,国王站在队伍的最前面。

排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。

国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。

注意,国王的位置始终在队伍的最前面。

【输入】输入文件为。

第一行包含一个整数 n,表示大臣的人数。

第二行包含两个整数 a 和 b,之间用一个空格隔开,分别表示国王左手和右手上的整数。

接下来 n 行,每行包含两个整数 a 和 b,之间用一个空格隔开,分别表示每个大臣左手和右手上的整数。

【输出】输出文件名为。

输出只有一行,包含一个整数,表示重新排列后的队伍中获奖赏最多的大臣所获得的金币数。

【输入输出样例】赏最多的大臣所获得金币数为2;按1、3、2这样排列队伍,获得奖赏最多的大臣所获得金币数为2;按2、1、3这样排列队伍,获得奖赏最多的大臣所获得金币数为2;按2、3、1这样排列队伍,获得奖赏最多的大臣所获得金币数为9;按3、1、2这样排列队伍,获得奖赏最多的大臣所获得金币数为2;按3、2、1这样排列队伍,获得奖赏最多的大臣所获得金币数为9。

因此,奖赏最多的大臣最少获得 2 个金币,答案输出 2。

【数据范围】对于 20%的数据,有1≤ n≤ 10,0 < a、b < 8;对于 40%的数据,有1≤ n≤20,0 < a、b < 8;对于 60%的数据,有1≤ n≤100;对于 60%的数据,保证答案不超过 109;对于 100%的数据,有 1 ≤ n ≤1,000,0 < a、b < 10000。

4.开车旅行()【问题描述】小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为,城市 i 和城市 j 之间的距离 d[]恰好是这两个城市海拔高度之差的绝对值,即d[i, j] = |��−|。

旅行过程中,小 A 和小 B 轮流开车,第一天小 A 开车,之后每天轮换一次。

他们计划选择一个城市 S 作为起点,一直向东行驶,并且最多行驶 X 公里就结束旅行。

小 A 和小 B 的驾驶风格不同,小 B 总是沿着前进方向选择一个最近的城市作为目的地,而小 A 总是沿着前进方向选择第二近的城市作为目的地(注意:本题中如果当前城市到两个城市的距离相同,则认为离海拔低的那个城市更近)。

如果其中任何一人无法按照自己的原则选择目的城市,或者到达目的地会使行驶的总距离超出 X 公里,他们就会结束旅行。

在启程之前,小 A 想知道两个问题:1.对于一个给定的0,从哪一个城市出发,小 A 开车行驶的路程总数与小 B 行驶的路程总数的比值最小(如果小 B 的行驶路程为 0,此时的比值可视为无穷大,且两个无穷大视为相等)。

如果从多个城市出发,小 A 开车行驶的路程总数与小B 行驶的路程总数的比值都最小,则输出海拔最高的那个城市。

2. 对任意给定的和出发城市,小 A 开车行驶的路程总数以及小 B 行驶的路程总数。

【输入】输入文件为。

第一行包含一个整数 N,表示城市的数目。

第二行有 N 个整数,每两个整数之间用一个空格隔开,依次表示城市 1 到城市 N 的海拔高度,即 H1,H2,……,,且每个都是不同的。

第三行包含一个整数 X0。

第四行为一个整数 M,表示给定 M 组和。

接下来的 M 行,每行包含 2 个整数和,表示从城市出发,最多行驶公里。

【输出】输出文件为。

输出共 1 行。

第一行包含一个整数 S0,表示对于给定的 X0,从编号为 S0 的城市出发,小 A 开车行驶的路程总数与小 B 行驶的路程总数的比值最小。

接下来的 M 行,每行包含 2 个整数,之间用一个空格隔开,依次表示在给定的和下小 A 行驶的里程总数和小 B 行驶的里程总数。

【输入输出样例 1】各个城市的海拔高度以及两个城市间的距离如上图所示。

如果从城市 1 出发,可以到达的城市为 2,3,4,这几个城市与城市 1 的距离分别为 1,1,2,但是由于城市 3 的海拔高度低于城市 2,所以我们认为城市 3 离城市 1 最近,城市 2 离城市 1 第二近,所以小 A 会走到城市 2。

到达城市 2 后,前面可以到达的城市为 3,4,这两个城市与城市 2 的距离分别为2,1,所以城市 4 离城市 2 最近,因此小 B 会走到城市 4。

相关文档
最新文档