原题:http://acm.hdu.edu.cn/showproblem.php?pid=4502

#include<stdio.h>
#include<string.h>

int data[105][105];    // 存储输入的工作数据
int dp[101];           // dp[i]表示从第i天到第m天可获得的最高工资数

int main(void)
{
    int t;
    int n,m;
    int i,j;
    int s,e,c;

    scanf("%d", &t);
    while(t--)
    {
        scanf("%d%d", &m, &n);
        memset(data,0,sizeof(data));
        memset(dp,0,sizeof(dp));

        for(i=0;i<n;i++)
        {
            scanf("%d%d%d", &s, &e, &c);
            if(c>data[s][e])           //果然自己没经验啊,败在此处
               data[s][e]=c;
        }

        dp[m]=data[m][m];
        for(i=m-1;i>=1;i--)
        {
            for(j=i;j<=m;j++)
            {
                if(data[i][j] != 0)
                {
                    if(dp[i]<data[i][j]+dp[j+1])
                        dp[i] = data[i][j]+dp[j+1];
                }
            }
            if(dp[i]<dp[i+1])
                dp[i] = dp[i+1];
        }

        printf("%d\n", dp[1]);
    }
    return 0;
}