HDU1074——Doning homework

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074

用的贪心算法,按截止时间排序。为什么没有A成功呢。

先把代码放在这里,过段时间在细细思考。

#include<stdio.h>

struct tu
{
	char str[105];
	int D;
	int C;
}s[17];


int compare(const void *a, const void *b)
{
	struct tu *t1 = (struct tu *)a;
	struct tu *t2 = (struct tu *)b;
	return t1->D - t2->D;
}

void SelectSort(struct tu *a, int nLen)
{
	int i,j;
	int nMin;
	struct tu temp;
	for(i = 0; i < nLen - 1; ++i)
	{
		nMin = i;//每次找到最小值
		for(j = i + 1; j < nLen; ++j)
		{
			if(compare(&a[nMin],&a[j]) > 0)
			{
				nMin = j;
			}
		}
		temp = a[nMin];
		a[nMin] = a[i];
		a[i] = temp;
	}
}

void main()
{
	int t;
	int n,i;
	int ans,End;

	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(i = 0; i < n; ++i)
		{
			scanf("%s %d %d",&s[i].str, &s[i].D, &s[i].C);
		}

		SelectSort(s, n);

		End = s[0].C;
		ans = 0;
		for(i = 1; i < n; ++i)
		{
			if(End + s[i].C > s[i].D)
			{
				ans += End + s[i].C - s[i].D;
			}
			End += s[i].C;
		}

		printf("%d\n",ans);

		for(i = 0; i < n; ++i)
		{
			puts(s[i].str);
		}
	}
}


你可能感兴趣的:(HDU1074——Doning homework)