当前位置:首页 >> 学科竞赛 >>

2011NOIP初赛C++提高组试题


第十七届全国青少年信息学奥林匹克联赛初赛试题
C++语言 两小时完成) (提高组 C++语言 两小时完成)
单项选择题 共 20 题, ( 每题有且仅有一个正确选项) 一、 每题 1.5 分, 共计 30 分。 每题有且仅有一个正确选项) 1、在二进制下,1010110+()=1100011。 A.1011 B.1101 C.1010 D.1111


2、字符“A”的 ASCII 码为十六进制 41,则字符“Z”的 ASCII 码为十六进制的() A.66 B.5A C.50 D.视具体的计算机而定

3、右图是一颗二叉树,它的先序遍历是() A.ABDEFC B.DBEFAC C.DFEBCA D.ABCDEF

4、寄存器是()的重要组成部分。 A.硬盘 B.高速缓存 C.内存 D.中央处理器(CPU) 5、广度优先搜索时,需要用到的数据结构是() A.链表 B.队列 C.栈 D.散列表

6、在使用高级语言编写程序时,一般提到的空间复杂度中的“空间”是指() A.程序运行时理论上所占的内存空间 B.程序运行时理论上所占的数组空间 C.程序运行时理论上所占的硬盘空间 D.程序源文件理论上所占的硬盘空间 7、应用快速排序的分治思想,可以实现一个求第大数的程序。假定不考虑极端的 最坏情况,理论上可以实现的最低的算法时间复杂度是(B) A.O(n2) B.O(nlogn) C.O(n) D.O(1)

8、为解决 Web 应用中的不兼容问题,保障信息的顺利流通, (D)制定了一系列标 准,设计等,并建议开发者遵循。 A.微软 B.美国计算机协会(ACM) C.联合国教科文组织 D.万维网联盟(W3C)

9、体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一 排。 每个同学按顺序来到操场时, 都从排位走向派头, 找到第一个比自己高的同学, 并站在他的后面。这种站队的方法类似于(B)算法。 A.快速排序 B.插入排序 C.冒泡排序 D.归并排序 10、1956 年()授予肖克利、巴丁和布拉顿,以表彰他们对半导体的研究和晶体 管效应的发现。 A.诺贝尔物理学奖 B.约翰冯诺依曼奖 C.图灵奖 D.高德纳奖

二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分。每题有一个或多个正确选 不定项选择题( 选择题 多选或少选均不得分) 项,多选或少选均不得分)

1、如果根节点的深度记为 1,则一棵恰有 2011 个叶子节点 如果根节点的深度记为 的二叉树的深度可能是() () A.10 B.11 C.12 D.2011

2、在布尔逻辑中,逻辑“ “或”的性质有() A.交换律(P∨Q=Q∨P) P) B.结合律 P∨(Q∨R)=(P R)=(P∨Q) ∨R C.幂等律 P∨P=P D.有界律 P∨1=1(1 表示逻辑真 表示逻辑真) 3、一个正整数在十六进制下有 100 位,则它在二进制下可能有() 一个正整数在十六进制下有 ()位。 A.399 B.400 C.401 D.404 4、汇编语言() A.是一种与具体硬件无关的程序设计语言 是一种与具体硬件无关的程序设计语言 B.在编写复杂程序时, ,相对于高级语言而言代码量较大,且不易调试 易调试 C.可以直接访问寄存器 可以直接访问寄存器、内存单元、I/O 端口 D.随着高级语言的诞生 随着高级语言的诞生,如今已完全被淘汰,不再使用 5、先有一段文言文,要通过二进制哈弗曼编码进行压缩 简单起见,假设这段文 要通过二进制哈弗曼编码进行压缩。简单起见 言文只有 4 个汉字“之” ” “乎” “ “者” “也”组成,他们出现的次数分别为 700、600、 他们出现的次数分别为 300、400.那么, “也”字的编码长度可能是 字的编码长度可能是() A.1 B.2 C.3 D.4 6、生物特征识别,是利用人体本身的生物特征进行身份认证的一种技术 是利用人体本身的生物特征进行身份认证的一种技术。目前, 是利用人体本身的生物特征进行身份认证的一种技术 指纹识别, 红魔识别、 人脸识别等技术已广泛应用于政府、 人脸识别等技术已广泛应用于政府 银行、 安全防卫等领域。 安全防卫等领域 一下属于生物特征识别技术及其应用的是() 一下属于生物特征识别技术及其应用的是 。

A.指静脉验证

B.步态验证 B.

C.ATM 机密码验证 D.声音验证 声音验证

7、对于序列“7、5、1、9 9、3、6、8、4” ,在不改变顺序的情况下, ,去掉()会使 逆序对的个数减少 3. A.7 B.5 C.3 D.6 8、实数之所以能表示很大或者很小的书 实数之所以能表示很大或者很小的书,是由于使用了() A.阶码 B.补码 C.反码 D.较长的尾数 9、对右图使用 Dijkstra 算法计算到其余各点的最短路径长度 算法计算到其余各点的最短路径长度,到 B 点的距离 d[B] 初始时赋为 8,在算法的执行过程中还会出现的值有 在算法的执行过程中还会出现的值有() 。 A.3 B.7 C.6 D.5 10、为计算机网络中进行数据交换而建立的规则 标准或约定的集合成为网络协议 为计算机网络中进行数据交换而建立的规则、标准或约定的集合成为网络协议 下列英文缩写中, ()是网络协议 是网络协议。 A.HTTP B.TCP/IP C.FTP D.WWW 三、问题求解(共 2 题,每题 5 分,共计 10 分) 问题求解( 1、平面图是可以画在平面上 且它的边仅在顶点上才能相交的简单无向图。4 个 平面图是可以画在平面上,且它的边仅在顶点上才能相交的简单无向图

顶点的平面图至多有 6 跳边,如右图所示。那么,5 个顶点的平面图至多有条边。 2、定义一种字符串操作,一次可以将其中一个元素一道任意位置。距离说明,对 于字符串“BCA” ,可以将 A 移到 B 之前,变成字符串“ABC” ,如果要将字符串” DACHEBGIF”变成”ABCDEFGHI” ,最少需要次操作。 四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 阅读程序写结果( 1. #include<stdio.h> #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; } 输入: 11 45664332321 输出: 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 输出: 3. #include<iostream> using namespace std; const int V=100; int n,m,ans,e[V][V]; bool visited[V]; void dfs(int x,int len) { 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() { //freopen("read 3.txt","r",stdin); int i,j,a,b,c; cin>>n>>m;

for(i=1;i<=n;i++) for(j=1;j<=n;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; } 输入: 46 1 2 10 2 3 20 3 4 30 4 1 40 1 3 50 2 4 60 输出: 4. #include<stdio.h> #include<string.h> #define size 1000000 #define mx 50 int a[size][mx],m,n; int h(int u,int v) { int ans=0; for(int i=1;i<=n;i++) if(a[u][i]!=a[v][i]) ans++; return ans; } int main() { memset(a,0,sizeof(a)); scanf("%d",&n); //n=7;

int i,j; //int k; m=1; while(1) { i=1; while(i<=n&&a[m][i]==1)i++; if(i>n) break; m++; a[m][i]=1; for(j=i+1;j<=n;j++) a[m][j]=a[m-1][j]; //for(k=1;k<=n;k++) printf("%3d",a[m][k]); //printf("\n"); } int sum=0; for(i=1;i<=m;i++) for(j=1;j<=m;j++) sum+=h(i,j); printf("%d\n",sum); return 0; } 输入:7 输出: 五、完善程序(第 1 题,每空 2 分,第 2 题,每空 3 分,共计 28 分) 完善程序(
1.( 大 整 数 开方)输入一个正整数n(1≤n<10100),试用二分法计算它的平方根的整数部 分。 #include<iostream> #include<string> #include<cstring> usingnamespacestd; constintSIZE=200; structhugeint{ intlen,num[SIZE]; }; //其中len表示大整数的位数;num[1]表示个位、num[2]表示十位,以此类推 hugeinttimes(hugeinta,hugeintb) { inti,j; hugeintans;

memset(ans.num,0,sizeof(ans.num)); for(i=1;i<=a.len;i++) for(j=1;j<=b.len;j++) ① +=a.num[i]*b.num[j]; for(i=1;i<=a.len+b.len;i++){ ans.num[i+1]+=ans.num[i]/10; ② ; } if(ans.num[a.len+b.len]>0) ans.len=a.len+b.len; else ans.len=a.len+b.len-1; returnans; } hugeintadd(hugeinta,hugeintb) { inti; hugeintans; memset(ans.num,0,sizeof(ans.num)); if(a.len>b.len) ans.len=a.len; else ans.len=b.len; for(i=1;i<=ans.len;i++){ ans.num[i]+= ③ ; ans.num[i+1]+=ans.num[i]/10; ans.num[i]%=10; } if(ans.num[ans.len+1]>0) ans.len++; returnans; } hugeintaverage(hugeinta,hugeintb) {

inti; hugeintans; ans=add(a,b); for(i=ans.len;i>=2;i--){ ans.num[i-1]+ =( ans.num[i]/=2; } ans.num[1]/=2; if(ans.num[ans.len]==0) ans.len--; returnans; } hugeintplustwo(hugeinta) { inti; hugeintans; ans=a; ans.num[1]+=2; i=1; while((i<=ans.len)&&(ans.num[i]>=10)){ ans.num[i+1]+=ans.num[i]/10; ans.num[i]%=10; i++; } if(ans.num[ans.len+1]>0) ⑤ ; returnans; } boolover(hugeinta,hugeintb) { inti; if( ⑥ ) returnfalse; ④ )*10;

if(a.len>b.len)returntrue; for(i=a.len;i>=1;i--){ if(a.num[i]<b.num[i])returnfalse; if(a.num[i]>b.num[i])returntrue; } returnfalse; } intmain() { strings; inti; hugeinttarget,left,middle,right; cin>>s; memset(target.num,0,sizeof(target.num)); target.len=s.length(); for(i=1;i<=target.len;i++) target.num[i] =s[target.len -i]memset(left.num,0,sizeof(left.num)); left.len=1; left.num[1]=1; right=target; do{ middle=average(left,right); ))right=middle; if(over( ⑧ else left=middle; }while(!over(plustwo(left),right)); for(i=left.len;i>=1;i--)cout<<left.num[i]; cout<<endl; return0; } ⑦ ;

2.( 笛卡尔树) 对于一个给定的两两不等的正整数序列 笛卡尔树是这样的一 棵 二 叉 树 : 对于一个给定的两两不等的正整数序列,笛卡尔树是这样的 首先, 它是一个最小堆, 除了根结点外, 即除 每个结点的权值都大于父节点的 的权值; 其次, 它的 中序遍历恰好就是给定的序列。例如,对于序列7、2、12、1、10、5、15 中序遍历恰好就是给定的序列 5、3,下图就是一 棵对应的笛卡尔树。现输入序列的规 现输入序列的规模n(1≤n<100)和序列的n个元素,试 试求其对应的笛卡 尔树的深度d(根节点深度为 为1),以及有多少个叶节点的深度为d。 #include<iostream> usingnamespacestd; constintSIZE=100+5; ; constintINFINITY=1000000; intn,a[SIZE],maxDeep p,num; voidsolve(intleft,in ntright,intdeep) { inti,j,min; if(deep>maxDeep){ ){ maxDeep=deep; num=1; } elseif(deep==maxDe Deep) ① ; min=INFINITY; for(i=left;i<=rig ght;i++) if(min>a[i]){ ){ min=a[i]; ; ② } if(left<j) } intmain() { ③ ; if(j<right) ④ ; ;

inti; cin>>n; for(i=1;i<=n;i++)cin>>a[i]; maxDeep=0; solve(1,n,1); cout<<maxDeep<<''<<num<<endl; return0; }


相关文章:
NOIP2011提高组初赛试题及答案C++版
高德纳奖 (Donald E. Knuth Prize) NOIP2011 初赛 提高组 C++ 1 二、不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数不少于 1...
NOIP2011初赛C++提高组试题
2011NOIP初赛C++提高组试题... 11页 2财富值 NOIP2011普及组初赛试题及... 10页 1财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请...
2009-2013年NOIP初赛提高组C++语言试题及参考答案
2009-2013年NOIP初赛提高组C++语言试题及参考答案_IT认证_资格考试/认证_教育...2011 第十七届全国青少年信息学奥林匹克联赛初赛试题 ( 提高组 ●● C++语言 ...
2007-2011年noip初赛提高组试题及答案
2007-2011noip初赛提高组试题及答案_学科竞赛_高中教育_教育专区。第十七届...以上都不对 19.NOIP 竞赛推荐使用的语言环境有( A.Dev-C++ B.Visual C++ )...
NOIP2015提高组初赛C++试题
NOIP2015提高组初赛C++试题_学科竞赛_高中教育_教育专区。 文档贡献者 我昰岽人...初赛试题(9提高组C) 暂无评价 2页 免费 2011NOIP初赛C提高组试题... 12页...
NOIP2011初赛提高组C++
NOIP2011初赛提高组C++_其它考试_资格考试/认证_教育专区。NOIP2011 ...Noip2014初赛提高组C试题... 9页 1下载券 NOIP2011第十七届初赛Pa... 11...
Noip2010提高组初赛试题及详细解析(C语言)
Noip2010提高组初赛试题及详细解析(C语言)_建筑/土木...2011 年是北京,中国人民大学,2012 年是北京,北 京...2.Pascal 语言、C 语言、和 C++语言都属于( A....
NOIP2010提高组初赛试题答案C++
NOIP2010提高组初赛试题答案C++_IT/计算机_专业资料。根据年鉴手打的啊,我想买贵...文档贡献者 scyjcp 贡献于2011-10-20 专题推荐 NOIP2010普及组初赛试题... ...
NOIP2008提高组初赛试题_C++含答案
NOIP2008提高组初赛试题_C++含答案_英语考试_外语学习_教育专区。第十四届全国青少年...专题推荐 NOIP2010提高组初赛试题... NOIP2011提高组初赛试题......
Noip2014初赛提高组C试题及答案(完整版)
Noip2014 初赛提高组试题及答案(完整版) 提高组 C 语言试题 一、单项选择题(...C++ C. FORTRAN D. Basic 2. 1TB 代表的字节数量是( ). A. 2 的 10 ...
更多相关标签:
noip2011提高组初赛 | noip提高组初赛试题 | noip提高组初赛试题 c | noip2015提高组初赛 | noip2016提高组初赛 | noip2016初赛试题 | noip2012提高组初赛 | noip初赛试题 |