题目:
http://acm.hdu.edu.cn/showproblem.php?pid=4502
代码:
#include<stdio.h>
#include<string>
int a[105][105],dp[105];
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int m,n;
scanf("%d%d",&m,&n);
int i,j;
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
{
int z,x,c;
scanf("%d%d%d",&z,&x,&c);
a[z][x]=max(a[z][x],c);
}
for(i=1;i<=m;i++)
{
for(j=i;j>=1;j--)
{
dp[i]=max(dp[i],dp[j-1]+a[j][i]);
}
}
printf("%d\n",dp[m]);
}
return 0;
}