试卷 NOIP 2013 提高组初赛试题
NOIP 2013 提高组初赛试题
单项选择题
第 1 题    单选题

一个 32 位整型变量占用(  )个字节。

A.

4

B.

8

C.

32

D.

128

第 2 题    单选题

二进制数 11.01 在十进制下是( )。

A.

3.25

B.

4.125

C.

6.25

D.

11.125

第 3 题    单选题

下面的故事与( )算法有着异曲同工之妙。

从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事……’”

A.

枚举

B.

递归

C.

贪心

D.

分治

第 4 题    单选题

1948 年,( )将热力学中的熵引入信息通信领域,标志着信息论研究的开端。

A.

冯·诺伊曼(John von Neumann)

B.

图灵(Alan Turing)

C.

欧拉(Leonhard Euler)

D.

克劳德·香农(Claude Shannon)

第 5 题    单选题

已知一棵二叉树有 2013 个节点,则其中至多有( )个节点有 2 个子节点。

A.

1006

B.

1007

C.

1023

D.

1024

第 6 题    单选题

在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。右图是一个有 5 个顶点、8 条边的连通图。若要使它不再是连通图,至少要删去其中的( )条边。

A.

2

B.

3

C.

4

D.

5

第 7 题    单选题

斐波那契数列的定义如下:

F1=1,F2=1,Fn=Fn−1+Fn−2(n≥3)。如果用下面的函数计算斐波那契数列的第 n 项,则其时间复杂度为( )。

int F(int n) 
{ 
 if (n <= 2) 
  return 1; 
 else 
  return F(n - 1) + F(n - 2); 
}


A.

O(1)

B.

O(n)

C.

O(n2)

D.

O(Fn)

第 8 题    单选题

二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子 树上所有节点的值。那么,二叉查找树的( )是一个有序序列。

A.

先序遍历

B.

中序遍历

C.

后序遍历

D.

宽度优先遍历

第 9 题    单选题

将 (2,6,10,17) 分别存储到某个地址区间为 

0∼10 的哈希表中,如果哈希函数 

h(x)= ( ),将不会产生冲突,其中 

amodb 表示 a 除以 b 的余数。

A.

xmod11

B.

x 2mod11

C.

(2x)mod11

D.

[]mod11,其中 表示 下取整

第 10 题    单选题

IPv4 协议使用 32 位地址,随着其不断被分配,地址资源日趋枯竭。因此,它正逐渐被 使用( )位地址的 IPv6 协议所取代。

A.

40

B.

48

C.

64

D.

128

第 11 题    单选题

二分图是指能将顶点划分成两个部分,每一部分内的顶点间没有边相连的简单无向图。 那么,12 个顶点的二分图至多有( )条边。

A.

18

B.

24

C.

36

D.

66

第 12 题    单选题

( )是一种通用的字符编码,它为世界上绝大部分语言设定了统一并且唯一的二进制编码,以满足跨语言、跨平台的文本交换。目前它已经收录了超过十万个不同字符。

A.

ASCII

B.

Unicode

C.

GBK 2312

D.

BIG5

第 13 题    单选题

把 64 位非零浮点数强制转换成 32 位浮点数后,不可能( )。

A.

大于原数

B.

小于原数

C.

等于原数

D.

与原数符号相反

第 14 题    单选题

对一个 n 个顶点、m 条边的带权有向简单图用 Dijkstra 算法计算单源最短路时,如果不使用堆或其它优先队列进行优化,则其时间复杂度为( )。

A.

O(mn+n 3)

B.

O(n2)

C.

O((m+n)logn)

D.

O((m+n 2)logn)

第 15 题    单选题

T(n) 表示某个算法输入规模为 n 时的运算次数。如果 T(1) 为常数,且有递归式 

T(n)=2×T(  )+2n,那么 T(n)= ( )。

A.

Θ(n)

B.

Θ(nlogn)

C.

Θ(n2)

D.

Θ(n2logn)

不定项选择题
第 16 题    多选题

下列程序中,正确计算 

1,2,…,100 这 100 个自然数之和 sum(初始值为 0)的是( )。

A.

 for (i = 1; i <= 100; i++) sum += i;

B.

i = 1; while (i > 100) { sum += i; i++;}

C.

i = 1; do { sum += i; i++; } while (i <= 100);

D.

i = 1; do { sum += i; i++; } while (i > 100);

第 17 题    多选题

( )的平均时间复杂度为 O(nlogn),其中 n 是待排序的元素个数。

A.

快速排序

B.

插入排序

C.

冒泡排序

D.

归并排序

第 18 题    多选题

以 A0作为起点,对下面的无向图进行深度优先遍历时(遍历的顺序与顶点字母的下标无关),最后一个遍历到的顶点可能是( )。

A.

A1

B.

A2

C.

A3

D.

A4

第 19 题    多选题

( )属于 NP 类问题。

A.

存在一个 P 类问题

B.

任何一个 P 类问题

C.

任何一个不属于 P 类的问题

D.

任何一个在(输入规模的)指数时间内能够解决的问题

第 20 题    多选题

CCF NOIP 复赛考试结束后,因( )提出的申诉将不会被受理。

A.

源程序文件名大小写错误

B.

源程序保存在指定文件夹以外的位置

C.

输出文件的文件名错误

D.

只提交了可执行文件,未提交源程序

问题求解
第 21 题    填空题

答案格式为:纯数字用,连接

第 22 题    填空题

现有一只青蛙,初始时在 

n 号荷叶上。当它某一时刻在 

k 号荷叶上时,下一时刻将等概 率地随机跳到 

1,2,…,k 号荷叶之一上,直至跳到 1 号荷叶为止。当 

n=2 时,平均一共跳 2 次;当 n=3 时,平均一共跳 2.5 次。则当 n=5 时,平均一共跳_________次。

注意:如果你的答案要求输出分数,请输出 a/b 的形式,且保证为最简分数。

阅读程序写结果
第 23 题    填空题
#include <stdio.h> 
#include <string.h> 
const int SIZE = 100; 
int main() { 
 int n, i, isPlalindrome; 
 char str[SIZE]; 
 scanf("%s", str); 
 n = strlen(str); 
 isPlalindrome = 1; 
 for (i = 0; i < n/2; i++) { 
  if (str[i] != str[n-i-1]) isPlalindrome = 0; 
 } 
 if (isPlalindrome) 
  printf("Yes\n"); 
 else 
  printf("No\n"); 
 return 0; 
}

输入:abceecba

输出:_________

第 24 题    填空题
#include <stdio.h> 
int main() 
{ 
 int a, b, u, v, i, num;  
 scanf("%d%d%d%d", &a, &b, &u, &v); 
 num = 0; 
 for (i = a; i <= b; i++) 
if (((i % u) == 0) || ((i % v) == 0)) 
   num++; 
 printf("%d\n", num); 
 return 0; 
}

输入:1 1000 10 15

输出:_________

第 25 题    填空题
#include <stdio.h> 
const int SIZE = 100; 
int main()  
{ 
 int height[SIZE], num[SIZE], n, ans; 
 int i, j; 
 scanf("%d", &n); 
 for (i = 0; i < n; i++) { 
  scanf("%d", &height[i]); 
  num[i] = 1; 
  for (j = 0; j < i; j++) { 
   if ((height[j] < height[i]) && (num[j] >= num[i]))  
    num[i] = num[j]+1; 
  } 
 } 
 ans = 0; 
 for (i = 0; i < n; i++) { 
  if (num[i] > ans) ans = num[i]; 
 } 
 printf("%d\n", ans); 
 return 0; 
}

输入:

8

3 2 5 11 12 7 4 10

输出:_________

第 26 题    填空题

输入:

6 5 9

1 4

2 3

2 4

3 2

4 1

4 3

4 5

5 4

6 4

输出:_________

完善程序
第 27-32 题    组合题

void swap3(int p) {
	int start1, end1, start2, end2, i, j, temp;
	start1 = 1;
	end1 = p;
	start2 = p + 1;
	end2 = n;
	while (true) {
		i = start1;
		j = start2;
		while ((i <= end1) && (j <= end2)) {
			temp = a[i];
			a[i] = a[j];
			a[j] = temp;
			i++;
			j++;
		}
		if (i <= end1)
			start1 = i;
		else if ((4)) {//(3 分)
			start1 = (5); //(3 分)
			end1 = (6); //(3 分)
			start2 = j;
		} else
			break;
	}
}
第 27 题 填空
第 28 题 填空
第 29 题 填空
第 30 题 填空
第 31 题 填空
第 32 题 填空
第 33-37 题    组合题

(两元序列)试求一个整数序列中,最长的仅包含两个不同整数的连续子序列。如有多 个子序列并列最长,输出任意一个即可。例如,序列 1 1 2 3 2 3 2 3 3 1 1 1 3 1 中, 有两段满足条件的最长子序列,长度均为 7,分别用下划线和上划线标出。

第 33 题 填空
第 34 题 填空
第 35 题 填空
第 36 题 填空
第 37 题 填空
答题卡
单项选择题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
不定项选择题
问题求解
21 22
阅读程序写结果
完善程序
题目总数:28
总分数:100
时间:120分钟
QQ
微信