4 3 5 1 2 5 7 7 1 1 4 2 4 4 5 5 4 对于这组测试数据为什么答案是30?谁能告诉我左右脑怎么分配题目能分出30呢?我的理解是这样的:第一组2577最短时间是7+5=12,第二组是4,第三组是5+4+2=11,第四组是4,一共是31。 这是我贪心的代码,如果可以的话,希望帮我调一下orz
#include<stdio.h>
#include<algorithm>
using namespace std;
int x[4][65];
int l[4];
int result;
bool cmp(int x, int y)
{
return x > y;
}
int main()
{
scanf("%d %d %d %d",&l[0], &l[1], &l[2], &l[3] );
for (int i = 0; i < l[0]; i++) scanf("%d",&x[0][i]);
for (int i = 0; i < l[1]; i++) scanf("%d", &x[1][i]);
for (int i = 0; i < l[2]; i++) scanf("%d", &x[2][i]);
for (int i = 0; i < l[3]; i++) scanf("%d", &x[3][i]);
sort(x[1], x[1] + l[0], cmp);
sort(x[0], x[0] + l[1], cmp);
sort(x[2], x[2] + l[2], cmp);
sort(x[3], x[3] + l[3], cmp);
for (int j = 0; j <= 3; j++)
{
int t = x[j][0];
result += t;
for (int i = 1; i < l[j]; i++)
{
t -= x[j][i];
if (t <= 0)
{
result -= t;
t = -t;
}
if (i == l[j] - 1&&t<0) result -= t;
}
}
printf("%d",result);
return 0;
}