题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2078
说明: 这个题目有点坑的地方,首先是一个晚上可以复习m门,并不是一定要复习完m门,可以只复习一门也可以复习m门;
假设复习完m门,首先从小到大排序,这样的话找更简单的就比较容易一些了。假设m 等于3 ,要复习的就是 a[1], a[2], a[3];那么效率就是 (100-a[3]) ^ 2 + (a[3] - a[2]) ^ 2 + (a[2] - a[1]) ^ 2; 其中(100 - a[1]) = (a[2] - a[1] + a[3] - a[2] + 100 - a[3]), 令 x = (100 - a[3]);
y = (a[3] - a[2]); z = (a[2] - a[1]); f = (100 - a[1]); 那么 x+y+z == f; (x+y+z) ^ 2 == f^2, 如果是复习三门那就是x^2 + y ^ 2 + z ^ 2,是不会大于(x+y+z)^2;所以复习一门就可以了;
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int T, m, n, a[45];
cin >> T;
while (T--)
{
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n);
int sum=0;
sum += (100 - a[0])*(100 - a[0]);
cout << sum << endl;
}
return 0;
}