动规试题4文档格式.docx
《动规试题4文档格式.docx》由会员分享,可在线阅读,更多相关《动规试题4文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
Obst.pas
InputFile
Maxlis.in
Team.in
Ski.in
Obst.in
OutputFile
Maxlis.out
Team.out
Ski.out
Obst.out
TimeLimit
MemoryLimit
Problem#1:
加权LIS(Maxlis)
Description
在LIS问题中,需要求出最长的序列的长度。
现在需要求一个序列,满足严格单调上升,最长并且序列中所有的数相加所得的和最大。
InputFormat
第一行是N,表示序列的长度;
第二行是N个用空格分开的数,表示序列。
N<
=1000。
OutputFormat
输出仅包含一个数,表示所求的和。
SampleInput
5
46348
SampleOutput
18
DataLimit
对于100%的数据,1≤N≤1000
保证题解小于10^9。
Problem#2:
合唱队形(Team)
学校又要开始排合唱队形了,这次队形和5年前的队形有所不同。
LXX老师希望把2N个同学排成2行,并且按从低到高的顺序排。
为了使队形显得更加美观,LXX老师还决定前后两排对应的学生高度必须相同。
当这2N位同学平均的排成两行之后,LXX老师发现这并不是他所希望的队形,为了节省精力,他决定不重新排队形,直接将队伍中的某些同学踢掉。
所以,LXX老师想知道每行最多有多少个学生留下。
读入有3行,第一行为一个数N。
接下来两行每行有N位同学的身高。
输出仅一个数,每行还有多少位学生留下。
10
180173168174185173165188198177
180187165174177185188163175182
3
对于30%的数据,1<
=N<
=30
对于70%的数据,1<
=100
对于100%的数据,1<
=300
Problem#3:
滑雪(Ski)
滑雪是一项非常刺激的运动,为了获得速度,滑雪的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。
给出一个由二维数组表示的滑雪区域,数组的数字代表各点的高度。
请你找出这个区域中最长的滑坡。
下面是一个例子:
12345
161718196
152425207
142322218
131211109
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。
在上面的例子中,一条可滑行的滑坡为24-17-16-1。
当然,25-24-23-...-3-2-1更长。
事实上,这是最长的一条滑坡。
输入文件ski.in的第一行为两个数R,C,表示滑雪区域的行数和列数(1≤R,C≤100)。
下面是R行,每行有C个整数,表示高度H
输出文件ski.out包括一行,只包含一个整数,表示滑雪区域中最长滑坡的长度。
55
161718196
152425207
142322218
131211109
25
对于100%的数据,1≤R,C≤100,1≤H≤10000
Problem#4:
最优二叉搜索树(OBST)
所谓二叉搜索树(BinarySearchTree,BST)是指这样一棵二叉树:
对于它的所有子树,满足其所有左子树中的关键字不大于根,其所有右子树中的关键字不小于根。
一棵比较理想的二叉搜索树的深度应该在Log2N左右,但是如果我们事先已知每个元素的查找次数的话,我们可以针对其设计出一棵最优二叉搜索树(OptimalBinarySearchTree,OBST)。
假设现在整棵二叉搜索树一共有1至N这N个元素,并且第i个元素的查找次数为f(i),其到根的距离为d(i),则总的查找代价为
Cost=f
(1)*d
(1)+f
(2)*d
(2)+……+f(N)*d(N)
而最优二叉搜索树指的是总的查找代价最小的那棵二叉搜索树。
现在你的任务是找到这样一棵最优二叉搜索树并求出其总的查找代价。
输入文件第一行包括一个整数N,第二行共N个数,其中第i个数为f(i)。
输出文件仅包含一个数,即最小的总查找代价。
51020
20
对于30%的数据,有1≤N≤10;
对于100%的数据,有1≤N≤500,所有的f(i)为不超过106的正整数。
过河卒(Triver)
【问题描述】
如图,A点有一个过河卒,需要走到目标B点。
卒行走的规则:
可以向下或者向右,同时在棋盘上的任何一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。
例如上图C点上的马可以控制9个点()图中的P1,P2,……,P8和C)。
棋盘用坐标表示,A点(0,0),B点(n,m)(n,m为不超过20的整数),同样马的位置坐标是需要给出的(约定:
C≠A,同时C≠B)。
现在要求你计算出卒从A点能够到达B点的路径的条数。
【输入格式】
B点的坐标(n,m)以及对方马的坐标(X,Y){不用判错}
【输出格式】
一个整数(路径的条数)。
【输入输出样例】
输入:
6632
输出:
17
装配线调度(Line)
Colonel公司在有两条装配线的工厂里生产汽车。
一个汽车底盘在进入每一条装配线后,在一些装配站中会在底盘安装部件,然后完成的汽车在装配线的末端离开。
每条装配线上有n个装配站,编号分别为
。
将装配线i(i为1或2)的第j个装配站表示为
装配线1的第j个站与装配线2的第j个站执行同样的功能。
然而,这些装配站是在不同时间建造的,而且采用了不同的技术,所以每个站所需时间不同。
我们把在装配站
所需装配时间记为
一个汽车底盘进入其中一条装配线,然后从一站进行到下一站。
底盘进入装配线i所需时间为
,装配完离开装配线i所需时间为
正常情况下,一个底盘进入一条装配线后,它只会经过该条装配线。
在相同装配线中,从一个装配站到下一个装配站,所需时间可以忽略。
偶尔来了一个特别急的订单,客户要求尽可能快地制造这些汽车。
对这些加急的订单,底盘依然依次经过n个装配站,但是工厂可将部分完成的汽车在任何装配站上从一条装配线移到另一条装配线上。
把已经通过装配站
的一个底盘从装配线
移走所需时间为
,其中
,而
(因为在第n个装配站后,装配已完成)。
你需要编一个程序,来确定在装配线1中选哪些站及在装配线2中选哪些站,以使汽车通过工厂的时间最少。
第一行输入一个数字n,每条装配线上有n个装配站。
第二、三行各有n+2个数字,表示两条装配线进入、经过每个站点、离开的时间。
第四、五行各有n-1个数字,表示两条装配线之间切换的时间。
【输出格式】、
共n个数字,即经过的站点所在装配线的序号。
【输入样例1】
6
27934843
48564572
23134
21221
【输出样例1】
38
121221
【输入样例2】
3748484
8176453
2133
2142
【输出样例2】
33
11222
【数据范围】
n<
1000000,保证本题的答案都是整数且在longint范围之内
贪心的神仙(Makeup)
神仙姐姐遇到一个难题:
有宝藏出现在姐姐面前后,又出现一行字说“这里的各种类型的宝物是放在长方形的石桌上,你只能一次性拿走同一种类型的宝物,并且要求你拿走的宝物必须为某个正方形子矩阵中某条对角线,而且此时,你所选择的这个正方形子矩阵中,除了对角线位置,其它位置不能出现你所需要的宝物类型(因为这样会分心)!
你可以把石桌视为01矩阵(0表示对应位置不是你所要的类型,1表示对应位置有你所要的类型,这样有助于你多拿些宝物)”。
当然爱美的姐姐选择的是可以美容养颜类型的,所以她把所想要的宝物(即美容水)用1表示,不想要的就用0表示。
同时姐姐是个很贪婪(贪美)的神仙,所以她想一下拿走尽量多的她所要的美容品。
请你帮神仙姐姐算一下,她一下最多可以拿多少个?
第一行有两个整数n和m(n,m≥1),描述石桌的规模。
接下来的n行,每行有m个数字(非“0”即“1”)。
每两个数字之间用空格隔开。
只有一个整数——神仙一下最多可以拿到多少个宝物,占一行,行末有回车。
【输入样例】
46
010100
001010
110001
011010
【输出样例】
对于30%的数据,有n,m≤100
对于60%的数据,有n,m≤1000
对于100%的数据,有n,m≤2500
传球游戏(Ball)
有一种传球游戏是这样的,游戏者一共有N*N个人,每个人有一个1至N*N的唯一的编号。
游戏在这样一个菱形的棋盘上进行:
游戏规则如下:
∙游戏一共有两个球,一开始处在菱形的上下两端的人的手中(图中的9和4),并且方向都向内;
∙接下来每个回合持球的人都可以把球传给前面一排中编号比自己小的某个人,拿到球的人在下个回合需要把球传给下一排中编号比自己小的那个人(比如当8把球传给6时,6的下一排就是1、3这一排,他可以随意传给1或3,而如果4把球传给3,3的下一排就是2、6、7,他只能把球传给2);
∙如果持球的人的下一排没有人或者下一排中的人的编号都比他大,那么他可以转向继续传(比如3把球传给2,2的下一排的编号都比2大,那么2可以转向将球传给1),每个球在传递过程中最多转向1次;
∙最后无法将球传给其他人的人算输。
很明显,编号最大的人肯定不会输,编号为1的人一旦球传到他手里就一定输。
但是编号是自己事先随机抽的,抽到小号码只能怪自己人品不好。
当然抽到小号码也并不意味着一定输,所以我们想知道,编号为T的人拿到球的概率,假设每个人会等概率地将球传给他下一排中所有编号比自己小的人中的某个人。
输入文件第一行包含一个整数N,表示菱形棋盘的边长,接下来2*N–1行描述相应棋盘上每个位置的人的编号。
最后一行仅包含一个整数,即询问的编号T。
输出文件仅包含一个实数,表示编号为T的人拿到球的概率,输出保留六位小数。
9
58
267
13
4
0.166667
对于20%的数据,有1≤N≤10;
对于100%的数据,有1≤N≤200,1≤T≤N*N。
设计一次竞赛使得选手最大可能的得分尽可能高。
可供选择的题目共有N类(1<
=N<
=10,000),你可以从每一类题目中选出任意道题或不选组成一次竞赛。
某一类题中的每一道题都需要相同的时间并能得到相同的分数。
竞赛总时间不超过M分钟(1<
=M<
=10,000)。
第一行两个整数M,N分别表示竞赛总时间与题目类数;
第2到N+1行每行两个整数,分别表示这类题每一道的分数和所需时间。
仅一行,即给定条件下最大可能的得分。
3004
10060
250120
120100
3520
605
building
WOW是BLIZZARD公司开发的一款网络游戏,游戏的背景是处在一个叫做艾泽拉斯的神秘大陆上的。
在这片陆地上生活着许多不同种族不同部落的奇幻生物,暗夜精灵就是其中的一员。
他们拥有高深的科技和强大的魔法,但却因为性格的冷傲孤僻而不被其他种族所接受。
为了改善这种状况,半神塞纳留斯决定发展有暗夜精灵族特色的产业来吸引外族,他发现暗夜精灵的建筑风格深受世人青睐,因为它们都是古树的造型,且具有一种神奇的魔力,就是在占地面积不变的情况下可以自由改变形状,使得建筑之间完全没有空隙。
于是,他将这一艰巨的任务交给了部落中最具天赋的工程师守望者玛维,让他在一块面积为n(0<
=n<
=100)的土地上建造若干个建筑,这些建筑都有各自的占地面积q(0<
=q<
=100),价格p(0<
=w<
=100)和魅力值v(0<
=v<
=100)。
就暗夜精灵当前掌握的科技来看,他们可以建造m(0<
=m<
=100)种建筑,为了不使游客感到乏味,每一种建筑规定最多只能建一座。
你的任务就是替玛维想出一种选择建造的方案,使得最多用k(0<
=k<
=100)的金钱,在面积为n的土地上建出的建筑具有最高的魅力值。
第一行有三个数m,n,k;
以下有m行,分别包含了m种建筑的占地面积q,价格p和魅力值v。
仅有一个数,为最高魅力值。
SampleInput1
51211
433
326
242
637
556
SampleOutput2
15
Problem#3:
LIS
给定N个数,求这N个数的最长上升子序列的长度。
第一行有一个整数N,第二行有N个整数。
一个数,为最长上升子序列的长度。
7
3642585
Ferry
iRabbit的国家被一条河流(河流是直的)分成南北两岸,南北两岸各有N个城市。
北岸的每一个城市有一个唯一的友好城市在南岸,且他们的友好城市彼此不同。
为了城市关系的发展,每对城市之间都想要开通轮渡。
由于河面上常常有雾,并且水速很快。
iRabbit决定禁止船只航线相交。
以避免发生安全事故。
iRabbit希望能在保证安全的情况下,尽可能多地开通航线。
由于N非常大,所以必须用程序解决。
iRabbit因为备战竞赛,所以十分繁忙,没有时间来编写程序,所以交给手下的TCR和sceoy解决。
可是他们两个想了很久都没有想出答案,所以想请你来帮助解决。
每组数据第一行有两个整数:
N(1≤N≤100000)、河的长度M(longint)接下来N行,每行两个数A、B。
表示这一对友好城市与河源头的距离(A代表北岸城市、B代表南岸城市),每一确定位置只可能有一座城市。
每组数据每行输出一个整数。
表示可以开通轮渡的最大线路数线路数。
730
224
26
103
1512
98
1717
42
4