重点试题汇总.docx

上传人:b****2 文档编号:2038029 上传时间:2022-10-26 格式:DOCX 页数:37 大小:67.18KB
下载 相关 举报
重点试题汇总.docx_第1页
第1页 / 共37页
重点试题汇总.docx_第2页
第2页 / 共37页
重点试题汇总.docx_第3页
第3页 / 共37页
重点试题汇总.docx_第4页
第4页 / 共37页
重点试题汇总.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

重点试题汇总.docx

《重点试题汇总.docx》由会员分享,可在线阅读,更多相关《重点试题汇总.docx(37页珍藏版)》请在冰豆网上搜索。

重点试题汇总.docx

重点试题汇总

findk(快速排序)

输入两个整数n和k,以及n个整数(绝对值都不超过109)。

求这n个数从小到大排列后,排在第k位的数是多少。

1<=n<=10000000;1<=k<=n。

输入:

findk.in

第一行是n和k,接下来的n行,每行一个整数。

输出:

findk.out

一个整数,表示这n个数从小到大排列后,排在第k位的数是几。

样例:

输入

54

9

2

8

16

3

输出

9

逃离农场(深度优先搜索)

一些牛要乘坐一艘船趁着黑夜逃离农场,但船可能容纳不下所有的牛。

一共有N头牛,1<=N<=20。

每头牛的体重分别是w[1]..w[N]。

要从中选出尽可能多的牛,使得他们上船后,船不会沉没。

船是否会沉没取决于:

将他们的体重相加,如果不产生进位,船就不会沉。

输入格式:

(escape.in)

第一行是整数N。

接下来的N行,每行一个正整数,分别表示牛的体重。

体重都不超过100000000(108)。

输出格式:

(escape.out)

一个整数,表示最多可以选几头牛。

他们的体重相加时没有进位。

样例:

输入

5

522

6

84

7311

19

输出

3

解释:

三头牛的重量分别是522、6和7311,这三个相加时没有进位:

522

6

+7311

------

7839

采药(背包问题)

辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。

为此,他想拜附近最有威望的医师为师。

医师为了判断他的资质,给他出了一个难题。

医师把他带到一个到处都是草药的山洞里对他说:

“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。

我会给你一段时间,在这段时间里,你可以采到一些草药。

如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。

如果你是辰辰,你能完成这个任务吗?

输入:

输入文件medic.in的第一行有两个整数T(1<=T<=1000)和M(1<=M<=100),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。

接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。

输出:

输出文件medic.out包括一行,这一行只包含一个整数,表示在规定的时间内(可以不花完所有时间),能采到的草药的最大总价值。

样例

输入

703

71100

691

12

输出

3

数据规模

对于30%的数据,M<=10;

对于全部的数据,M<=100。

堆集装箱(搜索或动态规划)

有N个集装箱,3<=N<=20。

每个集装箱的长各不相同,宽也各不相同。

集装箱不允许旋转,即长和宽不能互换。

现在要在这些集装箱中选择若干个堆叠起来。

要求上面集装箱的长必须小于下面集装箱的长,上面集装箱的宽也必须小于下面集装箱的宽。

问最多能选几个集装箱堆成一堆。

输入:

btwr.in

第一行是N。

接下来的N行,每行两个正整数,分别表示集装箱长和宽。

输出:

btwr.out

一个整数,表示最多能选几个集装箱堆成一堆。

样例:

输入

6

69

1012

911

810

78

53

输出

5

解释:

可以选择以下5个集装箱:

53

69

810

911

1012

可能还有别的方案。

2的N次方(高精度计算)

给出一个整数N(0<=N<=265),精确地输出2的N次方的值(当然,不能以0开头)。

题目名称:

ptwo

输入格式:

*第一行:

整数N

样例输入(文件ptwo.in):

100

输出格式:

*第一行:

2的N次方

样例输出(文件ptwo.out):

1267650600228229401496703205376

公牛数学(高精度计算)

公牛自称可以计算很大的整数之间的乘法,并得到精确的结果。

农夫约翰想知道他们的答案是否正确。

请你帮助他检查公牛的答案。

读入2个正整数(不大于10^40),计算他们的乘积,输出一个自然数(最高位不能含有多余的零)。

输入格式:

*第1..2行:

每行包含一个十进制数

样例输入(文件名:

bullmath.in):

11111111111111

1111111111

输出格式:

*第1行:

读入的两个数的正确的乘积

样例输出(文件名:

bullmath.out):

123456789011110987654321

等差三元组(枚举优化)

一个等差三元组是一个升序的三元组(s1,s2,s3),其中s2-s1与s3-s2相等。

例如:

(1,2,3),(2,4,6)和(14,21,28)。

给出一个有S(3<=S<=30)个元素的递增整数序列,各整数不重复出现,整数的范围在1..100之间,输出其中包含的等差三元组的个数。

程序名称:

lseq

输入格式:

*第一行:

一个整数S

*第二行:

S个用空格分开的整数,递增序列的元素。

样例输入(文件lseq.in):

7

1234689

输出格式:

*第一行:

一个整数,等差三元组的个数,保证一个32位的整型变量可以

容纳此整数

样例输出(文件lseq.out):

5

输出解析:

这是那些符合题意的等差三元组:

123

234

246

369

468

Volume(快速排序+统计技巧)

直线上有N个点,每个点的坐标都是整数,1<=N<=10000。

求每对点之间的距离总和的两倍。

坐标范围是0到1000000000。

输入:

volume.in

第一行是N。

接下来的N行,每行一个整数,表示每个点的坐标。

输入:

volume.out

一个整数,表示每对点之间的距离总和的两倍。

样例:

输入

5

1

5

3

2

4

输出

40

巨大的牛棚bigbrn(动态规划)

农夫约翰想要在他的正方形农场上建造一座正方形大牛棚。

他讨厌在他的农场中砍树,

想找一个能够让他在空旷无树的地方修建牛棚的地方。

假定他的农场划分成NxN的方格。

输入数据中包括有树的方格的列表。

你的任务是计算并输出,在他的农场中,不需要砍树却能够修建的最大正方形牛棚。

牛棚的边必须和水平轴或者垂直轴平行。

考虑下面的方格,它表示农夫约翰的农场,'.'表示没有树的方格,'#'表示有树的方格

12345678

1........

2.#...#..

3........

4........

5........

6..#.....

7........

8........

最大的牛棚是5x5的,可以建造在方格右下角的两个位置其中一个。

输入格式:

(bigbrn.in)

第1行:

两个整数:

N(1<=N<=1000),农场的大小,和T(1<=T<=10000)有树的方格的数量。

第2到T+1行:

两个整数(1<=整数<=N),有树格子的横纵坐标。

输出格式:

(bigbrn.out)

输出文件只由一行组成,约翰的牛棚的最大边长。

样例

输入:

83

22

26

63

输出:

5

比武大会(动态规划或贪心)

参赛者围成一个圆圈,每个人可以和跟他相邻的人比武,胜利者留在原地,失败者淘汰出局。

大会的组织者已经知道每位选手的能力值,能力值大的一定可以战胜能力值小的(能力值相同时,不会有平局,必有一方被淘汰)。

同时为了比赛更加激烈,他们倾向于让能力值接近的选手比武。

所以他们想安排一个比武的顺序,在不改变参赛者现在位置的条件下,使得所有比赛中两名选手能力值差别的总和最小。

输入:

fight.in

第1行1个整数n,表示参赛的人数(2<=n<=200)。

第2行n个数,以此表示圆上第1,2,……,n个人的能力值(为不超过10000的非负数)。

显然,第n个人和第1个人相邻。

输出:

fight.out

一个整数,为n-1场比赛双方能力值差的绝对值之和的最小值。

样例

fight.in

fight.out

3

231

2

蜘蛛网(递推)

蜘蛛拉出n条直线构成无限大的蜘蛛网,这n条直线没有三线共点的情况。

这样的蜘蛛网能有多少种不同的交点数?

例如4条直线的蜘蛛网,可以有0、3、4、5、6共5种不同的交点数情况,这些交点数情况之和为0+3+4+5+6=18。

输入:

web.in

一个数n,1<=n<=100。

输出:

web.out

输出两个数,分别表示有多少种不同的交点数和所有情况中交点数之和,中间用一个空格隔开。

样例

输入:

4

输出:

518

矩形合并enclose(迭代法)

有n个矩形的区域,边都平行于坐标轴。

如果两个矩形内部的公共部分面积大于零,就要合并,合并后仍旧是一个矩形,边都平行于坐标轴,而且是包含着两个矩形的面积最小的矩形。

如下图所示:

*********************

****

****

*++++++++++->**

*+*+**

***+****+**

++**

++++++++++*************

当然,新的矩形也有可能再和其他矩形合并。

求最终有几个矩形和矩形的总面积。

输入:

(enclose.in)

第一行是n,1<=n<=100。

接下来的n行,每行描述一个矩形。

共4个整数,分别表示左下角和右上角的顶点坐标。

坐标分量范围在0到10000之间。

输出:

(enclose.out)

两个整数,用一个空格分开。

分别表示最后合并完的矩形数和矩形的总面积。

样例:

输入

3

0052

8899

2164

输出

225

解释:

两个矩形为(0,0)-(6,4)和(8,8)-(9,9),总面积是6*4+1*1=25。

机器人robots(贪心)

地图标有若干个G,表示垃圾。

有一些捡垃圾的机器人,可以从左上角(1,1)走到右下角,沿途捡起地上的垃圾。

但机器人只能往右或往下走。

求最少需要几个机器人。

下面是一个地图:

以下有两种方案,最少要2个机器人。

输入:

robots.in

有若干行,每行两个整数,表示垃圾的坐标,以00结束。

地图大小不超过24*24,而且坐标从第一行开始从上往下给出,每行从左往右。

输出:

robots.out

一个整数,表示需要的最少机器人数量。

样例:

输入

12

14

24

26

44

47

66

00

输出

2

输入

11

22

44

00

输出

1

无等差三元组nls(搜索优化)

一个等差三元组是指一个升序的三元组(s1,s2,s3),其中s2-s1与s3-s2相等。

例如:

(1,2,3),(2,4,6)和(14,21,28)都是等差三元组。

给出L(4<=L<=13),表示一个升序序列的元素个数。

M(L

找出所有正好含L个元素,且可能含有的最大整数为M的正整数递增序列,使序列中不包含等差三元组。

你的程序需要输出符合以上条件的前三个序列,除非总数不到三个。

最后一行输出符合条件的序列的总数。

输入格式:

(文件nls.in)

第一行是两个由空格分开的整数L和M。

输出格式:

(文件nls.out)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1