NOIP2012 初赛提高组C++试题及答案

合集下载

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() {

NOIP2012信息学奥林匹克竞赛初赛-模拟卷

NOIP2012信息学奥林匹克竞赛初赛-模拟卷

2012年全国青少年信息学奥林匹克联赛初赛模拟试题一.单项选择题(共10题,每题1.5分,共计15分,每题有且仅有一个正确答案。

)1、以下说法正确的是()A、第一个提出“goto语句有害论”的计算机科学家是Donald E.KnuthB、被誉为“迄今最伟大的计算机程序员、算法学家”的是Edsger Wybe DijkstraC、世界上第一位程序员是V on NoumaD、被誉为“计算机语言之母”的是Grace Hopper2、关于CPU的说法正确的是()A、计算机的运算速度取决于给定的时间内,它的处理器所能处理的数据量。

B、64位计算机指的是CPU每秒钟可处理的数据为2^64位。

C、双核CPU,是指在一个主板上放入两个CPU并行进行工作。

D、我国自主产权的CPU龙芯3A集成了两个处理器核心3、ASCII码表中的大写字母后有6个其它字符,接着便是小写字母。

现已知:A字母的ASCII码为(41)16{表示16进制数41 },那么f应为( )10A、46B、78C、102D、1084、Pascal的创始人是()。

(A)Donald E.Knuth (B)Steve Jobs (C)Charles Bachman D (D)Niklaus Wirth5、若二叉树的先序遍历序列为ABDECF,中序遍历序列DBEAFC,则其后序遍历序列为()A. DEBAFCB. DEFBCAC. DEBCFAD. DEBFCA6、已知后缀表达式abc+*d-,则它的中缀表达式和前缀表达式分别是:A) (a+b)*c-d -+*abcd B)a+b*c-d -+a*bcdC)a*(b+c)-d -*a+ bcd D)a*(b+c)-d -a b*+cd7、由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()A.23B.37C.44D.468、排序算法是稳定的意思是:关键码相同的记录排序前后相对位置不发生改变,下列哪种排序算法是不稳定的:A) 冒泡排序 B) 插入排序 C) 归并排序 D) 快速排序9、下图给出了一个加权有向图,从顶点V1出发,以下哪个是活动中的关键路径()A. V1,V5,V3,V2B. V1,V4,V3,V2C. V1,V4, V2D. V1,V4,V5,V3,V210、以下有关全国信息学奥林匹克竞赛说法有误的是()A、 NOI评测只检查按照要求输出的结果,而不涉及过程和算法。

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提高组初赛历年试题及答案完善题篇

for (i = m; i>= 1; i--){
used[data[i]] = false;
for (j =data[i]+1; j <= n; j++) if (!used[j]){
used[j] =true;
data[i] = j;
flag = true;
break;
}
if (flag)
{
for (k = i+1;k <= m; k++)
solve(left, j –1, deep + 1);
if(j<right)
solve(j+ 1, right, deep + 1);
}
int main()
{
inti;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
maxDeep=0;
solve(1,n,1);
cout<<maxDeep<<' '<<num<<endl;
}
void push()
for (j = 1; j<=n; j++) if (!used[j]){
data[k] = j;
used[j] =true;
break;
}
break;
}
}
}
}
NOIP2012-2.新壳栈 小 Z 设计了一种新的数据结构“新壳栈”。首先,它和传统的栈一样支持压入、弹 出操作。此外,其栈顶的前 c 个元素是它的壳,支持翻转操作。其中,c> 2 是 一个固定的正整数,表示壳的厚度。小 Z 还希望,每次操作,无论是压入、弹 出还是翻转,都仅用与 c 无关的常数时间完成。聪明的你能帮助她编程实现“新 壳栈”吗? 程序期望的实现效果如以下两表所示。其中,输入的第一行是正整数 c,之后每 行输入都是一条指令。另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不 足 c 个,应当输出相应的错误信息。

noip2012初赛普及组c++精彩试题及问题详解

noip2012初赛普及组c++精彩试题及问题详解

第十八届全国青少年信息学奥林匹克联赛初赛〔普与组C++语言试题〕竞赛时间:2012年10月13日14:30~16:30选手注意:●试题纸共有10页,答题纸共有2页,总分为100分。

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

●不得使用任何电子设备〔如计算器、手机、电子词典等〕或查阅任何书籍资料一、单项选择题〔共20题,每题1.5分,共计30分;每题且仅有一个正确选项〕1.计算机如果缺少〔〕,将无法正常启动。

A.内存 B.鼠标C. U盘 D.摄像头2.〔〕是一种先进先出的线性表。

A.栈B.队列 C.哈希表〔散列表〕 D.二叉树3.目前计算机芯片〔集成电路〕制造的主要原料是〔〕,它是一种可以在沙子中提炼出的物质。

A.硅B.铜 C.锗 D.铝4.十六进制数9A在〔〕进制下是232。

A.四 B.八 C.十 D.十二5.〔〕不属于操作系统。

A.Windows B.DOS C.Photoshop D.NOI Linux6.如果一棵二叉树的中序遍历是BAC,那么它的先序遍历不可能是〔〕。

A.ABC B.CBA C.ACB D.BAC7.目前个人电脑的〔〕市场占有率最靠前的厂商包括Intel、AMD等公司。

A.显示器 B.CPU C.内存 D.鼠标8.使用冒泡排序对序列进展升序排列,每执行一次交换操作系统将会减少1个逆序对,因此序列 5,4,3,2,1需要执行〔〕次操作,才能完成冒泡排序。

A.0 B.5 C.10 D.159. 1946年诞生于美国宾夕法尼亚大学的ENIAC属于〔〕计算机。

A.电子管 B.晶体管 C.集成电路 D.超大规模集成电路10.无论是TCP/IP模型还是OSI模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。

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

A.中国公司的经理与波兰公司的经理交互商业文件B.军队发布命令C.国际会议中,每个人都与他国地位对等的人直接进展会谈D.体育比赛中,每一级比赛的优胜者晋级上一级比赛11.矢量图〔Vector Image〕图形文件所占的贮存空间比拟小,并且无论如何放大、缩小或旋转等都不会失真,是因为它〔〕。

NOIP2012初赛普及组C 题目及答案

NOIP2012初赛普及组C  题目及答案

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

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

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料一、单项选择题(共20题,每题1.5分,共计30分;每题且仅有一个正确选项)1.计算机如果缺少(),将无法正常启动。

A.内存B.鼠标C.U盘D.摄像头2.()是一种先进先出的线性表。

A.栈B.队列C.哈希表(散列表)D.二叉树3.目前计算机芯片(集成电路)制造的主要原料是(),它是一种可以在沙子中提炼出的物质。

A.硅B.铜C.锗D.铝4.十六进制数9A在()进制下是232。

A.四B.八C.十D.十二5.()不属于操作系统。

A.Windows B.DOS C.Photoshop D.NOI Linux6.如果一棵二叉树的中序遍历是BAC,那么它的先序遍历不可能是()。

A.ABC B.CBA C.ACB D.BAC7.目前个人电脑的()市场占有率最靠前的厂商包括Intel、AMD等公司。

A.显示器B.CPU C.内存D.鼠标8.使用冒泡排序对序列进行升序排列,每执行一次交换操作系统将会减少1个逆序对,因此序列5,4,3,2,1需要执行()次操作,才能完成冒泡排序。

A.0 B.5 C.10 D.159.1946年诞生于美国宾夕法尼亚大学的ENIAC属于()计算机。

A.电子管B.晶体管C.集成电路D.超大规模集成电路10.无论是TCP/IP模型还是OSI模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。

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

A.中国公司的经理与波兰公司的经理交互商业文件B.军队发布命令C.国际会议中,每个人都与他国地位对等的人直接进行会谈D.体育比赛中,每一级比赛的优胜者晋级上一级比赛11.矢量图(Vector Image)图形文件所占的贮存空间比较小,并且无论如何放大、缩小或旋转等都不会失真,是因为它()。

NOIP2012初赛普及组C题目及答案

NOIP2012初赛普及组C题目及答案

第十八届全国青少年信息学奥林匹克联赛初赛(普及组C++语言试题)2012 年 10 月 13 日 14:30~16:30选手注意:试题纸共有10页,答题纸共有2页,满分100分。

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

不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料、单项选择题(共 20题,每题1.5分,共计30分;每题且仅有一个正确选项) 1 •计算机如果缺少( ),将无法正常启动。

A .内存B .鼠标C . U 盘D . 摄像头2 . ( )是一种先进先出的线性表。

A .栈B .队列C .哈希表(散列表)D .二叉树3 . 目前计算机芯片(集成电路) 制造的主要原料是(),它是一种可以在沙子中提炼出的物质。

A . 硅B .铜C .锗D . 铝 4 . 十六进制数9A 在( ) 进制下是232。

A . 四B .八C .十D . 十二5 . ( )不属于操作系统。

A . WindowsB . DOSC . PhotoshopD . NOI Linux6.如果一棵二叉树的中序遍历是 BAC ,那么它的先序遍历不可能是( )。

8 .使用冒泡排序对序列进行升序排列,每执行一次交换操作系统将会减少 1个逆序对,因此序列 5, 4, 3, 2, 1需要执行()次操作,才能完成冒泡排序。

A . 0B . 5C . 10D . 159 . 1946年诞生于美国宾夕法尼亚大学的 ENIAC 属于( )计算机。

10 .无论是TCP/IP 模型还是OSI 模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层 中。

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

竞赛时间: A . ABC B . CBA C . ACB D . BAC7.目前个人电脑的( )市场占有率最靠前的厂商包括 A .显示器 B . CPU C .内存 In tel 、AMD 等公司。

D .鼠标A .电子管B .晶体管C .集成电路D .超大规模集成电路B •军队发布命令11.矢量图(Vector Image)图形文件所占的贮存空间比较小,并且无论如何放大、缩小或旋转等都不会失真,是因为它()。

noip复习资料(提高组c++版)

noip复习资料(提高组c++版)
7.3完全背包问题79
7.4多重背包问题79
7.5二维费用的背包问题80
7.6分组的背包问题81
7.7有依赖的背包问题81
7.8泛化物品81
7.9混合背包问题82
7.10特殊要求82
7.11背包问题的搜索解法83
7.12子集和问题84
第八单元 排序算法85
8.1常用排序算法85
8.2简单排序算法87
11.6进制转换(正整数)123
11.7高精度算法(压位存储)!123
11.8快速幂!128
11.9表达式求值129
11.10解线性方程组*133
第十二单元 数论算法135
12.1同余的性质!135
12.2最大公约数、最小公倍数!135
12.3解不定方程ax+by=c!*135
12.4同余问题*136
13.8拓扑排序152
13.9关键路径155
13.10二分图初步157
13.11小结160
第十四单元STL简介164
14.1STL概述164
14.2常用容器164
14.3容器适配器170
14.4常用算法171
14.5迭代器175
14.6示例:合并果子175
附录A思想和技巧177
A.1时间/空间权衡177
1.9简单的算法分析和优化14
1.10代码编辑器16
第二单元 基础算法17
2.1经典枚举问题17
2.2火柴棒等式18
2.3梵塔问题19
2.4斐波那契数列19
2.5常见的递推关系!20
2.6选择客栈22
2.72k进制数23
2.8Healthy Holsteins24
2.9小结25

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。

程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。

因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。

1、分层读:高层入手,逐层深入,正确理解程序。

2、写注解:固化、总结、提炼已有的理解成果。

3、先模拟:根据代码顺序跟踪变量,模拟运算。

4、找规律:先模拟几次循环后,找出背后的规律。

5、看功能:从代码结构和运算结果判断程序功能。

6、猜算法:有时不知道算法,通过结构和函数猜一猜。

7、换方法:了解程序本质后,换一个熟悉的方法试试。

对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。

阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。

如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。

当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。

祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring> using namespace std; const int SIZE = 100; int main(){int n,i,sum,x,a[SIZE]; cin>>n;memset(a,0,sizeof(a)); for(i=1;i<=n;i++){ cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){ i++;sum+=a[i];}cout<<i<<endl; return 0;}输入:4 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream>using namespace std;int n;void f2(int x,int y);void f1(int x,int y){if(x<n)f2(y,x+y);void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++) {cin>>a>>b>>c; e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++) visited[i]=false; ans=0;for(i=1;i<=n;i++) dfs(i,0);cout<<ans<<endl; return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

NOIP2012提高组复赛试题

NOIP2012提高组复赛试题

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

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

输入数据保证一定有解。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx

NOIP 提高组初赛历年试题及答案阅读题篇程序写果(共 4 ,每 8 分,共 32 分)程序的最好方法并非是依次从到尾。

程序不像迷,我无法从末尾几找到答案,也不像一本引人入的籍,只需直接翻到褶最多的那几,我就能找到最精彩的片断。

因此我在程序,最好逐一考察研究每一段代,搞清楚每一段代的来去脉,理解每一段代在程序中所起的作用,而形成一个虚的程序构,并以此基来行。

1、分:高入手,逐深入,正确理解程序。

2、写注解:固化、、提已有的理解成果。

3、先模:根据代序跟踪量,模运算。

4、找律:先模几次循后,找出背后的律。

5、看功能:从代构和运算果判断程序功能。

6、猜算法:有不知道算法,通构和函数猜一猜。

7、方法:了解程序本后,一个熟悉的方法。

大多数人来,写程序是令人开心的一件事情,人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其到好的程序,就像一篇美文,令人心神怡,豁然开朗,因背后是一个人的思,甚至整个人生。

人的程序不可以巩固自己的知,启自己的思,提升自己的修养,你收,其,也是在学、在、在工作中的最重要、最常用的基本功。

如果写程序是把自己的思化代,程序就是把代化你理解的人的思。

当你程序有烈的代入感,像演一,真正入到的精神世界,面部表情也随之日丰富起来。

祝你!你通关了!之,看得多,得多,拼得多,你就考得多⋯⋯NOIP2011-1 .#include <iostream>#include <cstring>using namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;return 0;}输入:114 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i 值(中位数),而不是sum ,也不是a[x]输出: 3NOIP2011-2 .#include <iostream> using namespace std; int n;void f2(int x,int y); void f1(int x,int y){if(x<n)f2(y,x+y);}void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入: 30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出: 1 2 5 13 34NOIP2011-3 .#include <iostream>using namespace std; const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++){cin>>a>>b>>c;e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++)visited[i]=false;ans=0;for(i=1;i<=n;i++)dfs(i,0);cout<<ans<<endl;return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS ),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则 ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

noip2012普及组初赛及答案(c)

noip2012普及组初赛及答案(c)

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

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

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料一、单项选择题(共20题,每题1.5分,共计30分;每题且仅有一个正确选项)1.计算机如果缺少(),将无法正常启动。

A.内存B.鼠标C.U盘D.摄像头2.()是一种先进先出的线性表。

A.栈B.队列C.哈希表(散列表)D.二叉树3.目前计算机芯片(集成电路)制造的主要原料是(),它是一种可以在沙子中提炼出的物质。

A.硅B.铜C.锗D.铝4.十六进制数9A在()进制下是232。

A.四B.八C.十D.十二5.()不属于操作系统。

A.Windows B.DOS C.Photoshop D.NOI Linux6.如果一棵二叉树的中序遍历是BAC,那么它的先序遍历不可能是()。

A.ABC B.CBA C.ACB D.BAC7.目前个人电脑的()市场占有率最靠前的厂商包括Intel、AMD等公司。

A.显示器B.CPU C.内存D.鼠标8.使用冒泡排序对序列进行升序排列,每执行一次交换操作系统将会减少1个逆序对,因此序列5,4,3,2,1需要执行()次操作,才能完成冒泡排序。

A.0 B.5 C.10 D.159.1946年诞生于美国宾夕法尼亚大学的ENIAC属于()计算机。

A.电子管B.晶体管C.集成电路D.超大规模集成电路10.无论是TCP/IP模型还是OSI模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。

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

A.中国公司的经理与波兰公司的经理交互商业文件B.军队发布命令C.国际会议中,每个人都与他国地位对等的人直接进行会谈D.体育比赛中,每一级比赛的优胜者晋级上一级比赛11.矢量图(Vector Image)图形文件所占的贮存空间比较小,并且无论如何放大、缩小或旋转等都不会失真,是因为它()。

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docxNOIP 提高组初赛历年试题及答案阅读题篇程序写果(共 4 ,每 8 分,共 32 分)程序的最好方法并非是依次从到尾。

程序不像迷,我无法从末尾几找到答案,也不像一本引人入的籍,只需直接翻到褶最多的那几,我就能找到最精彩的片断。

因此我在程序,最好逐一考察研究每一段代,搞清楚每一段代的来去脉,理解每一段代在程序中所起的作用,而形成一个虚的程序构,并以此基来行。

1、分:高入手,逐深入,正确理解程序。

2、写注解:固化、、提已有的理解成果。

3、先模:根据代序跟踪量,模运算。

4、找律:先模几次循后,找出背后的律。

5、看功能:从代构和运算果判断程序功能。

6、猜算法:有不知道算法,通构和函数猜一猜。

7、方法:了解程序本后,一个熟悉的方法。

大多数人来,写程序是令人开心的一件事情,人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其到好的程序,就像一篇美文,令人心神怡,豁然开朗,因背后是一个人的思,甚至整个人生。

人的程序不可以巩固自己的知,启自己的思,提升自己的修养,你收,其,也是在学、在、在工作中的最重要、最常用的基本功。

如果写程序是把自己的思化代,程序就是把代化你理解的人的思。

当你程序有烈的代入感,像演一,真正入到的精神世界,面部表情也随之日丰富起来。

祝你!你通关了!之,看得多,得多,拼得多,你就考得多??NOIP2011-1 .#include#includeusing namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;< p="">return 0;}输入:114 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i 值(中位数),而不是sum ,也不是a[x]输出: 3NOIP2011-2 .#include using namespace std; int n;void f2(int x,int y); void f1(int x,int y){if(x<n)< p="">f2(y,x+y);}void f2(int x,int y){cout<<x<<' ';<="" p="">f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入: 30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出: 1 2 5 13 34 NOIP2011-3 .#includeusing namespace std; const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]); visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++){cin>>a>>b>>c;e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++)visited[i]=false;ans=0;for(i=1;i<=n;i++)dfs(i,0);cout<<ans<<endl;< p="">return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS ),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。

程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。

因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。

1、分层读:高层入手,逐层深入,正确理解程序。

2、写注解:固化、总结、提炼已有的理解成果。

3、先模拟:根据代码顺序跟踪变量,模拟运算。

4、找规律:先模拟几次循环后,找出背后的规律。

5、看功能:从代码结构和运算结果判断程序功能。

6、猜算法:有时不知道算法,通过结构和函数猜一猜。

7、换方法:了解程序本质后,换一个熟悉的方法试试。

对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。

阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。

如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。

当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。

祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring> using namespace std; const int SIZE = 100; int main(){int n,i,sum,x,a[SIZE]; cin>>n;memset(a,0,sizeof(a)); for(i=1;i<=n;i++){ cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){ i++;sum+=a[i];}cout<<i<<endl; return 0;}输入:4 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream>using namespace std;int n;void f2(int x,int y);void f1(int x,int y){if(x<n)f2(y,x+y);void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++) {cin>>a>>b>>c; e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++) visited[i]=false; ans=0;for(i=1;i<=n;i++) dfs(i,0);cout<<ans<<endl; return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

NOIP提高组初赛及答案C

NOIP提高组初赛及答案C
A.记录了大量像素块的色彩值来表示图像 B.用点、直线或者多边形等基于数学方程的几何图元来表示图像
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单项选择题(共 10 题,每题 1.5 分,共计 15 分;每题有且仅有一个正确选 项)
1. A. 2. A. 3. A. 4. ( 目前计算机芯片(集成电路)制造的主要原料是( 出的物质。 硅 B. 铜 C. 锗 D. 铝 ),它是一种可以在沙子中提炼
)是主要用于显示网页服务器或者文件系统的 HTML 文件内容,并让用户与这些 资源管理器 B. 浏览器 C. 电子邮件 D. 编译器
第十八届全国青少年信息学奥林匹克联赛初赛
提高组 C++语言试题 竞赛时间:2012 年 10 月 13 日 14:30~16:30
选手注意:
试题纸共有 15 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写在试题纸上 的一律无效。 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
4. A. 5. A. 6.
在计算机显示器所使用的 RGB 颜色模型中,( 黄色 B. 蓝色 C.
紫色
一棵二叉树一共有 19 个节点,其叶子节点可能有( 1 B. 9 C. 10
已知带权有向图 G 上的所有权值均为正整数,记顶点 u 到顶点 v 的最短路径的权值为 d(u, v)。若 v1, v2, v3, v4, v5 是图 G 上的顶点,且它们之间两两都存在路径可达,则以下 说法正确的有( A. B. C. D. )。 v1 到 v2 的最短路径可能包含一个环 d(v1, v2) = d(v2, v1) d(v1, v3) ≤ d(v1, v2) + d(v2, v3) 如果 v1→v2→v3→v4→v5 是 v1 到 v5 的一条最短路径,那么 v2→v3→v4 是 v2 到 v4 的一 条最短路径
)属于互联网上的 E-mail 服务协议。 B. FTP C. POP3 )。 D. SMTP
10. 以下关于计算复杂度的说法中,正确的有( A. B. C. D.
如果一个问题不存在多项式时间的算法,那它一定是 NP 类问题 如果一个问题不存在多项式时间的算法,那它一定不是 P 类问题 如果一个问题不存在多项式空间的算法,那它一定是 NP 类问题 如果一个问题不存在多项式空间的算法,那它一定不是 P 类问题
二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分;每题有一个或多个正确 选项,多选或少选均不得分)
1. A. 2. 如果对于所有规模为 n 的输入,一个算法均恰好进行( 法的时间复杂度为 O(2 )。 2n+1 B. 3n C. n*2n D. 22n
n
)次运算,我们可以说该算
从顶点 A0 出发,对有向图( 是 A0, A1, A2, A3, A4。
3.
#include <iostream> using namespace std; const int SIZE = 20; int data[SIZE]; int n, i, h, ans; void merge() { data[h-1] = data[h-1] + data[h]; h--;
B. C. D. 8. A. B. 9. A.
结合律:(a ⊕ b) ⊕ c = a ⊕ (b ⊕ c) 关于逻辑与的分配律:a ⊕ (b ∧ c) = (a ⊕ b) ∧ (a ⊕ c) 关于逻辑或的分配律:a ⊕ (b ∨ c) = (a ⊕ b) ∨ (a ⊕ c) 十进制下的无限循环小数(不包括循环节内的数字均为 0 或均为 9 的平凡情况),在二 进制下有可能是( 无限不循环小数 以下( HTTP )。 C. 有限小数 D. 整数 无限循环小数(不包括循环节内的数字均为 0 或均为 1 的平凡情况)
D. 体育比赛中,每一级比赛的优胜者晋级上一级比赛 第4层 奥运会 ↑ 第3层 全运会 ↑ 第2层 省运会 ↑ 第1层 市运会
5. A. C. 6. A. C. 7. A.
如果不在快速排序中引入随机化,有可能导致的后果是( 数组访问越界 排序结果错误 B. D. 陷入死循环
)。
排序时间退化为平方级 )计算机。
CCF NOIP2012 初赛 提高组 C++ 7
ans++; } int main() { cin>>n; h = 1; data[h] = 1; ans = 0; for (i = 2; i <= n; i++) { h++; data[h] = 1; while (h > 1 && data[h] == data[h-1]) merge(); } cout<<ans<<endl; } (1) 输入:8 输出:_________(4 分) (2) 输入:2012 输出:_________(4 分) 4. #include <iostream> #include <string> using namespace std; int lefts[20], rights[20], father[20]; string s1, s2, s3; int n, ans; void calc(int x, int dep) { ans = ans + dep*(s1[x] - 'A' + 1); if (lefts[x] >= 0) calc(lefts[x], dep+1); if (rights[x] >= 0) calc(rights[x], dep+1);
CCF NOIP2012 初赛 提高组 C++ 6
2.
#include <iostream> using namespace std; int n, i, ans; int gcd(int a, int b) { if (a % b == 0) return b; else return gcd(b, a%b); } int main() { cin>>n; ans = 0; for (i = 1; i <= n; i++) if (gcd(n,i) == i) ans++; cout<<ans<<endl; } 输入:120 输出:_________
D.
系统分配的链表空间溢出
地址总线的位数决定了 CPU 可直接寻址的内存空间大小,例如地址总线为 16 位, 其最 大的可寻址空间为 64KB。如果地址总线是 32 位,则理论上最大可寻址的内存空间为 ( A. ) 。 B. 1MB C. 1GB )。 D. WCDMA D. 4GB 128KB
9. A.
CCF NOIP2012 初赛 提高组 C++ 8
} void check(int x) { if (lefts[x] >= 0) check(lefts[x]); s3 = s3 + s1[x]; if (rights[x] >= 0) check(rights[x]); } void dfs(int x, int th) { if (th == n) { s3 = ""; check(0); if (s3 == s2) { ans = 0; calc(0, 1); cout<<ans<<endl; } return; } if (lefts[x] == -1 && rights[x] == -1) { lefts[x] = th; father[th] = x; dfs(th, th+1); father[th] = -1; lefts[x] = -1; } if (rights[x] == -1) { rights[x] = th; father[th] = x; dfs(th, th+1); father[th] = -1; rights[x] = -1; } if (father[x] >= 0)
三、问题求解(共 2 题,每题 5 分,共计 10 分)
1. 本题中,我们约定布尔表达式只能包含 p, q, r 三个布尔变量,以及“与” (∧)、 “或” (∨)、“非”(¬ )三种布尔运算。如果无论 p, q, r 如何取值,两个布尔表达式的值 总是相同, 则称它们等价。 例如, (p∨q)∨r 和 p∨(q∨r)等价, p∨¬ p 和 q∨¬ q 也等价; 而 p∨q 和 p∧q 不等价。那么,两两不等价的布尔表达式最多有_________个。 2. 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图 1 有 5 个不同 的独立集(1 个双点集合、3 个单点集合、1 个空集),图 2 有 14 个不同的独立集。那 么,图 3 有_________个不同的独立集。
7.
逻辑异或(⊕)是一种二元运算,其真值表如下所示。 a False False True True A. 交换律:a ⊕ b = b ⊕ a b False True False True )。 a ⊕ b False True True False
以下关于逻辑异或的性质,正确的有(
CCF NOIP2012 初赛 提高组 C++ 4
以下不属于目前 3G(第三代移动通信技术)标准的是( GSM B. TD-SCDMA C. CDMA2000
10. 仿生学的问世开辟了独特的科学技术发展道路。 人们研究生物体的结构、 功能和工作原 理, 并将这些原理移植于新兴的工程技术之中。 以下关于仿生学的叙述, 错误的是 ( A. C. 由研究蝙蝠,发明雷达 由研究海豚,发明声纳 B. D. 由研究蜘蛛网,发明因特网 由研究电鱼,发明伏特电池 ) 。
1946 年诞生于美国宾夕法尼亚大学的 ENIAC 属于( 电子管 集成电路 B. D. 晶体管
超大规模集成电路 )引发错误。
在程序运行过程中,如果递归调用的层数过多,会因为( 系统分配的栈空间溢出 B.
相关文档
最新文档