hdu 4502(DP)

点击打开链接


//

分析:

如果用贪心的话,枚举不完全。。。。。

注意,可能出现起始时间都相同的工作。。。。


#include"stdio.h"
#include"string.h"

#define max(x,y) x>y?x:y
int a[101][101];
int main()
{
	int T;
	int i,j;
	int n,m;
	int b,c,d;
	int dp[101];
	
	scanf("%d",&T);
	while(T--)
	{
		memset(dp,0,sizeof(dp));
		memset(a,0,sizeof(a));
		scanf("%d%d",&m,&n);
		for(i=0;i<n;i++)
		{
			scanf("%d%d%d",&b,&c,&d);
			if(c>m||b>m)continue;
			else if(a[b][c]<d)a[b][c]=d;//可能出现相同起始时间的工作
		}
		for(i=1;i<=m;i++)//总天数
		{
			for(j=0;j<=i;j++)//其中一部分的天数
				dp[i]=max(dp[i],dp[j]+a[j+1][i]);
		}
		printf("%d\n",dp[m]);
	}
	return 0;
}

	


你可能感兴趣的:(hdu 4502(DP))