最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

NOIP复赛模拟试题I

来源:动视网 责编:小OO 时间:2025-09-28 20:47:56
文档

NOIP复赛模拟试题I

NOIP复赛模拟试题(I)题目名称源文件名称输入文件名称输出文件名称时间空间医院设置hospital.cpphospital.inhospital.out1s256000KB面积area.cpparea.inarea.out1s256000KB极值问题number.cppnumber.innumber.out1s256000KB牛的旅行fun.cppfun.infun.out1s256000KB1.医院设置(hospital.cpp)【问题描述】设有一棵二叉树(如下图,其中圈中的数字表
推荐度:
导读NOIP复赛模拟试题(I)题目名称源文件名称输入文件名称输出文件名称时间空间医院设置hospital.cpphospital.inhospital.out1s256000KB面积area.cpparea.inarea.out1s256000KB极值问题number.cppnumber.innumber.out1s256000KB牛的旅行fun.cppfun.infun.out1s256000KB1.医院设置(hospital.cpp)【问题描述】设有一棵二叉树(如下图,其中圈中的数字表
NOIP复赛模拟试题(I)

题目名称源文件名称输入文件名称输出文件名称时间空间
医院设置hospital.cpphospital.inhospital.out1s256000 KB
面积area.cpparea.inarea.out1s256000 KB
极值问题number.cppnumber.innumber.out1s256000KB
牛的旅行fun.cppfun.infun.out1s256000KB
1.医院设置(hospital.cpp)

【问题描述】

    设有一棵二叉树(如下图,其中圈中的数字表示结点中居民的人口,圈边上数字表示结点编号。现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间的距离为1。就本图而言,若医院建在1处,则距离和=4+12+2*20+2*40=136;若医院建在3处,则距离和=4*2+13+20+40=81……

【输入格式(hospital.in)】

其中第一行一个整数n,表示树的结点数(n<=100)。接下来的n行每行描述了一个结点的状况,包含三个整数,整数之间用空格(一个或多个)分隔,其中:第一个数为居民人口数;第二个数为左链接,为0表示无链接;第三个数为右链接,为0表示无链接。

【输出格式(hospital.out)】

该文件只有一个整数,表示最小距离和。

【样例输入】

5

13 2 3

4 0 0

12 4 5

20 0 0

40 0 0

【样例输出】

81

2.面积(area.cpp)

【问题描述】

编程计算由“*”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目。如右下图所示,在10*10的二维数组中,有“*”围住了15个点,因此面积为15。在输入中,为了方便起见使用“1”来代替右图中的“*”。

【输入格式(area.in)】

输入数据保证仅有一个10*10的01矩阵

【输出格式(area.out)】

一个数,表示面积

【样例输入】

0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 1 1 0 0 0

0 0 0 0 1 0 0 1 0 0

0 0 0 0 0 1 0 0 1 0

0 0 1 0 0 0 1 0 1 0

0 1 0 1 0 1 0 0 1 0

0 1 0 0 1 1 0 1 1 0

0 0 1 0 0 0 0 1 0 0

0 0 0 1 1 1 1 1 0 0

0 0 0 0 0 0 0 0 0 0

【样例输出】

15

3. 极值问题(number.cpp)

【问题描述】

已知m、n为整数,且满足下列两个条件:

① m、n∈{1,2,…,k},即1≤m,n≤k

②(n2-m*n-m2)2=1

你的任务是:编程输入正整数k(1≤k≤109),求一组满足上述两个条件的m、n,并且使m2+n2的值最大。例如,从键盘输入k=1995,则输出:m=987   n=1597。

【输入格式(number.in)】

一个整数k

【输出格式(number.out)】

共两行,分别为“m=….”和“n=….”

【输入样例】

1995

【输出样例】

m=987

n=1597

4、牛的旅行(fun.cpp)

【问题描述】

  农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言,你能看到至少有两个牧区不连通。现在,John想在农场里添加一条路径 ( 注意,恰好一条 )。对这条路径有这样的:一个牧场的直径就是牧场中最远的两个牧区的距离 ( 本题中所提到的所有距离指的都是最短的距离 )。考虑如下的两个牧场,图1是有5个牧区的牧场,牧区用“*”表示,路径用直线表示。每一个牧区都有自己的坐标:

 图1所示的牧场的直径大约是12.07106, 最远的两个牧区是A和E,它们之间的最短路径是A-B-E。这两个牧场都在John的农场上。John将会在两个牧场中各选一个牧区,然后用一条路径连起来,使得连通后这个新的更大的牧场有最小的直径。注意,如果两条路径中途相交,我们不认为它们是连通的。只有两条路径在同一个牧区相交,我们才认为它们是连通的。   现在请你编程找出一条连接两个不同牧场的路径,使得连上这条路径后,这个更大的新牧场有最小的直径。

【输入格式(fun.in)】

第 1 行:一个整数N (1 <= N <= 150), 表示牧区数;    第 2 到 N+1 行:每行两个整数X,Y ( 0 <= X,Y<= 100000 ), 表示N个牧区的坐标。每个牧区的坐标都是不一样的。    第 N+2 行到第 2*N+1 行:每行包括N个数字 ( 0或1 ) 表示一个对称邻接矩阵。    例如,题目描述中的两个牧场的矩阵描述如下:

A B C D E F G H      

A 0 1 0 0 0 0 0 0      

B 1 0 1 1 1 0 0 0      

C 0 1 0 0 1 0 0 0      

D 0 1 0 0 1 0 0 0      

E 0 1 1 1 0 0 0 0      

F 0 0 0 0 0 0 1 0      

G 0 0 0 0 0 1 0 1      

H 0 0 0 0 0 0 1 0   

输入数据中至少包括两个不连通的牧区。

【输出格式(fun.out)】

   只有一行,包括一个实数,表示所求答案。数字保留六位小数。

【输入样例】

   8

   10 10

   15 10

   20 10

   15 15

   20 15

   30 15

   25 10

   30 10

   01000000

   10111000

   01001000

   01001000

   01110000

   00000010

   00000101

   00000010

【输出样例】

   22.071068

文档

NOIP复赛模拟试题I

NOIP复赛模拟试题(I)题目名称源文件名称输入文件名称输出文件名称时间空间医院设置hospital.cpphospital.inhospital.out1s256000KB面积area.cpparea.inarea.out1s256000KB极值问题number.cppnumber.innumber.out1s256000KB牛的旅行fun.cppfun.infun.out1s256000KB1.医院设置(hospital.cpp)【问题描述】设有一棵二叉树(如下图,其中圈中的数字表
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top