题意理解有问题,请各位帮我看看
查看原帖
题意理解有问题,请各位帮我看看
683031
JOEYyyyyfuck楼主2024/4/1 10:45

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;
}
2024/4/1 10:45
加载中...