- 博客(0)
- 资源 (12)
- 问答 (1)
- 收藏
- 关注
运动员最佳配对问题
羽毛球队有男女运动员各n人。
给定2 个n×n矩阵P和Q。P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势;Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势。
由于技术配合和心理状态等各种因素影响,P[i][j]不一定等于Q[j][i]。男运动员i和女运动员j配对组成混合双打的男女双方竞赛优势为P[i][j]*Q[j][i]。
设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。
编程任务:设计一个算法,对于给定的男女运动员竞赛优势,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。
如下面sample的数据:
P=
10 2 3
2 3 4
3 4 5
Q=
2 2 2
3 5 3
4 5 1
最大的男女双方竞赛优势总和为:10*2 + 4*5 + 4*3 = 52
最佳搭配为:(女1,男1)(女2,男3)(女3,男2)
输入格式
输入数据第一行有1 个正整数n (1≤n≤10)。接下来的2n行,每行n个数。前n行是P,后n行是Q。
输出格式
将计算出的男女双方竞赛优势的总和的最大值输出。
输入样例
3
10 2 3
2 3 4
3 4 5
2 2 2
3 5 3
4 5 1
输出样例
52
2012-01-06
忙碌又贪心的泥瓦匠
村里有唯一一个泥瓦匠叫Kemo,很多人需要找Kemo修房子、修灶台、造花园……等,大家可以向Kemo预约修葺的时间和工钱。
现在情况是:
1)Kemo只有一个人,不能同时为两个雇主工作
2)Kemo只有干完一个雇主家的活才可以在接下来的一天切换到另一个雇主家里干活。未干完一份活不可以离开,不可以为多位雇主交叉时间干活
3)Kemo如果不能在预约的时间那天应约的话,这个雇主的这份钱就挣不到了
Kemo比较聪明,他把大家的预约收集好,想让自己忙碌一阵子,赚最多的钱。现在请你为这个忙碌而又贪心的Kemo设计一个思路吧。
输入格式
输入4行:
第一行,一个数字,n,表示n个人向Kemo预约需要修葺(n<=100)
第二行,n个正数,表示这n个人所需完成修葺的时间的起始点。若时间点为8,表示第8天开始
第三行,n个正数,表示这n个人所需完成修葺的工程天数。若天数为3,表示这一工程必须维持3天完成(所有工程都可以在第1000天内完成,即起始点+工期<=1000)
第四行,n个正数,表示这n个人能向Kemo付出的工钱,工钱以每天计
输出格式
输出:忙完这阵子,Kemo最多能挣多少钱?
例如:4个人需要找Kemo修葺,起始时间、工期和每天的工钱分别是:
1 3 8 4
3 2 3 2
5 6 10 7
则:Kemo可以获得的最大收益为:5*3+10*3+7*2 = 59
输入样例
4
1 3 8 4
3 2 3 2
5 6 10 7
输出样例
59
2012-01-06
删数问题(算法)
问题描述:
给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列成一个新的正整数。
算法设计:
给定n (1<=n<=200)位的正整数a和k,此时,k小于n。
试着设计一个算法,找出删去k个数,剩下数字组成的新数最小的删数方案。
输入格式
可输入多组测试数据(不超过50组测试数据),每组测试数据分两行,每行一个数,数的含义如下。
第一行:正整数a(a是大于0的一个n位正整数)
第二行:正整数k
以0来结束测试数据。
输出格式
输出每组测试数据所得出的删k位数之后的最小数。
若输出的数首位是0,无须理会,0也直接输出即可。例如:024,就直接输出024,无须改成24。
输入样例
178543
4
87654321
2
123456789
1
254193
1
90249
2
0
输出样例
13
654321
12345678
24193
024
2012-01-06
区间相交问题
给定x轴上n个闭区间,去掉尽可能少的闭区间,使剩下的闭区间都不相交。
注意:这里,若区间与另一区间之间仅有端点是相同的,不算做区间相交。例如,[1,2]和[2,3]算是不相交区间。
输入格式
第一行一个正整数n,表示闭区间数。接下来n行中,每行2个整数,表示闭区间的2个整数端点。
输出格式
输出去掉的最少的闭区间数。
输入样例
3
10 20
10 15
12 15
输出样例
2
2012-01-06
带价值的作业安排问题
已知n项作业E={1, 2, … ,n} 需要完成,只有一台机器,同一时刻至多完成一个作业,而且每项作业需要的时间都是单位时间1。
第k项作业要求在时间fk时刻完成,而且完成这项作业将获得效益pk,(k=1, 2, … , n)。
E的子集称为相容的,如果它们可以被安排由一台机器完成。
带限期和价值的作业安排问题就是:要在所给的作业集合中选出总效益值最大的相容子集,请输出最大的总效益值。
输入格式
输入3行:
第一行,一个数字,n值,表示n个作业(n<10000)。
第二行,n个正数字,表示这n个作业的需完成的时间点
第三行,n个正数字,表示这n个作业的效益值
输出格式
输出:相容作业子集所获得的最大总效益
例如:7个作业
时间点和效益值分别是:
1 8 8 5 9 3 5
20 25 30 7 18 10 18
则:可以获得的最大总效益为:20 + 30 + 18 + 10 + 18 = 96
输入样例
7
1 8 8 5 9 3 5
20 25 30 7 18 10 18
输出样例
96
2012-01-06
取数对弈(算法)
取数对弈游戏问题:
取数游戏是一个 2 人对策游戏。游戏开始时将 n 个数在棋盘上从左到右排成一行。
甲乙双方轮流在这一行数的左右两端取数,直至全部取完 n 个数。每人所取得的数的总和为其得分值。
最后双方得分多者获胜。(游戏规定由甲方先取数。)
这里,甲乙双方都采用如下最优策略:
1)甲每次取都希望取到的这个数使自己得分最高
2)乙每次取都希望取到的这个数令甲的得分最低
请编程实现:在甲乙双方都采用最优策略的前提下,计算甲方先取数时双方的最后得分。
输入格式
对于每组输入数据,输入数据的第 1 行有 1 个正整数 n (1<=n<=100),表示有 n 个数在棋盘上从左到右排成一行。
接下来的 n 个数表示在棋盘上依次排列的 n 个数。
输出格式
在甲乙双方都采用最优策略的前提下,输出计算出的双方的最后得分。甲方得分在前,乙方得分在后。
输入样例
6
4 7 2 9 5 2
输出样例
18 11
2012-01-06
最大长方体问题
一个长,宽,高分别是m,n,p的长方体被分割成m*n*p个小立方体。每个小立方体内含一个整数。
试着设计一个算法,计算所给长方体的最大子长方体。子长方体的大小由它内部所含所有整数之和确定。
约定:当该长方体所有元素均为负数时,输出最大子长方体为0。
输入格式
第一行3个正整数m,n,p,其中 1<=m,n,p<=50
接下来的m*n行中每行p个整数,表示小立方体中的数。
输出格式
第一行中的数是计算出的最大子长方体的大小。
输入样例
3 3 3
0 -1 2
1 2 2
1 1 -2
-2 -1 -1
-3 3 -2
-2 -3 1
-2 3 3
0 1 3
2 1 -3
输出样例
14
2012-01-06
数字三角(算法)
问题描述:给定一个由n行数字组成的数字三角形,如下图所示。试用动态规划算法,计算出从三角顶部至底部的一条路径,使得该路径经过的数字总和最大。
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输入格式
第一行是数字三角的行数n,1<=n<=100。接下来n行是数字三角各行中的数字,所有数字在0~99之间。
输出格式
输出两行,第一行是计算出的最大路径的和值,第二行是该路径上的数字。若有多条路径,靠右的路径优先(即仅仅输出靠右的路径即可,无需多条路径都输出)。
如:
Input:
5
7
3 8
8 1 6
2 7 4 4
4 5 2 4 5
有两条路径:7-3-8-7-5和7-8-6-4-5都为30,由于后者靠右,因此仅输出后者。
Output:
30
7 8 6 4 5
输入样例
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出样例
30
7 3 8 7 5
2012-01-06
整数的特殊划分
★问题描述:
给定一个正整数N,将其分解为若干个整数的和,且这些整数都是2的 k 次方(k>=0),
请问共有多少种分解方法?
例如,对于整数5,有
5=1+1+1+1+1;
5=1+1+1+2;
5=1+2+2;
5=1+4
共4种分解方法。
对于整数8,有
8=1+1+1+1+1+1+1+1;
8=1+1+1+1+1+1+2;
8=1+1+1+1+2+2;
8=1+1+2+2+2;
8=2+2+2+2;
8=1+1+1+1+4;
8=1+1+2+4;
8=2+2+4;
8=4+4;
8=8
共10种分解方法。
输入格式
每组输入数据仅包含一个整数 N (1 <= N <= 10000)。
注意:这里原来题目是1 <= N <= 100000,现在改为:1 <= N <= 10000
输出格式
输出一个整数M。M为分解方法数,由于M可能很大,请输出 M00000000。
输入样例
5
输出样例
4
2012-01-06
整数因子分解
大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm
例如:当n=12时,共有8种不同的分解式:
12 = 12
12 = 6*2
12 = 4*3
12 = 3*4
12 = 3*2*2
12 = 2*6
12 = 2*3*2
12 = 2*2*3
对于给定正整数n,计算n共有多少种不同的分解式。
输入格式
第一行一个正整数n (1<=n<=1000000)
输出格式
不同的分解式数目
输入样例
12
输出样例
8
2012-01-06
有重复元素的排列问题
输入格式
第1行是元素个数n,1<=n<=15。接下来的1行是待排列的n个元素,元素中间不要加空格。
输出格式
程序运行结束时,将计算输出n个元素的所有不同排列。最后1行中的数是排列总数。
(说明:
此题,所有计算出的排列原本是无所谓顺序的。但为了容易评判,输出结果必须唯一!
现做约定:所有排列的输出顺序如课本P11的例2-4的程序段的输出顺序,区别仅是这道题是含重复元素。)
输入样例
4
aacc
输出样例
aacc
acac
acca
caac
caca
ccaa
6
2012-01-06
矩形的并(算法)
在 X-Y 坐标平面上,给定多个矩形,它们的边分别与坐标轴平行。请计算它们的并的面积。
输入格式
输入第一行为一个整数 n,1<=n<=100,表示矩形的数量。
接下来有 n 行,每行包括四个数:x1,y1,x2,y2 (0<=x1<x2<=100000;0<=y1<y2<=100000),用空格分开,不一定为整数。
(x1,y1)表示一个长方形的左下顶点坐标,(x2,y2)表示右上顶点坐标。
输出格式
n个矩形的并的面积,保留两位小数。
输入样例
2
0 0 2 2
1 1 3 3
输出样例
7.00
Hint
此题没能用上递归、分治或其他等一系列方法。以下为推荐思路,鼓励自行思考别的方法。
第一题本为练笔,但我挑选的此题似乎实现起来麻烦。
对不住大家了!若实在觉得繁琐的可跳过此题。:(
但,练练手总没坏处滴 :)
多个矩形面积重叠没有规律,难以直接求解或用上递归的思路。
只能从矩形重叠的情况入手,进行局部相加。
1)将所有矩形的左右边界都投影到X轴上,形成各个区间
2)从左向右计算每个区间,将落在该区间内的矩形进行面积统计
3)将每个区间计算的面积再相加
2012-01-06
一个超长字符串表示的十进制数转化为十六进制的字符串
2014-10-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人