您的位置:首页 > 其它

HDU 2078复习时间

2017-04-09 17:42 190 查看

问题描述

为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为100和这门课的难度差的平方。xhd这学期选了n门课,但是一晚上他最多只能复习m门课,请问他一晚上复习的最高效率值是多少?

输入

输入数据的第一行是一个数据T,表示有T组数据。

每组数据的第一行是两个整数n(1 <= n <= 40),m(1 <= m <= n)。

接着有n行,每行有一个正整数a(1 <= a <= 100),表示这门课的难度值。

输出

对于每组输入数据,输出一个整数,表示最高效率值。

样例输入

2

2 2

52

25

12 5

89

64

6

43

56

72

92

23

20

22

37

31

样例输出

5625

8836

问题分析

这是一题求最大效率的问题,那么我们用贪心算法是很容易的,由题意我们知道每当他复习完一门课时我们需要找一个更简单课的来复习,所以,我们根据贪心的规则来说我们只需要第一个就求出最大效率就行,如果我们第一个求出来的不是最大的效率,那么在复习后面课时我们的效率将会不断递减,从而得出的效率就不是最高的效率了。

代码

#include<stdio.h>
int main()
{
int t,n,m,a[40],i,j,x,c;
scanf("%d",&t);
for (x=0;x<t;x++)
{
scanf("%d %d",&n,&m);
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (a[i]>a[j])
{
c=a[i];a[i]=a[j];a[j]=c;
}
printf("%d\n",(100-a[0])*(100-a[0]));
}
return 0;
}


测试结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: