dp【i】 表示第i天能赚得的最大工资
#include#include #include #include using namespace std ; struct node { int star ,end ,cost ; }A [1100 ]; int max (int a ,int b ) { return a >b ?a :b ; } int cmp (node a ,node b ) { return a .end <b .end ; } int main() { int i ,j ,n ,m ,c ,T ; int dp [1100 ]; scanf ("%d" ,&T ); while(T --) { scanf ("%d%d" ,&m ,&n ); for(i =1 ;i <=n ;i ++) { scanf ("%d%d%d" ,&A [i ].star ,&A [i ].end ,&A [i ].cost ); } //sort(A+1,A+1+n,cmp); memset (dp ,0 ,sizeof(dp )); for(i =1 ;i <=m ;i ++) { for(j =1 ;j <=n ;j ++) { if(A [j ].end <=i &&A [j ].star -1 >=0 ) { dp [i ]=max (dp [i ],dp [A [j ].star -1 ]+A [j ].cost ); } } } printf ("%d\n" ,dp [m ]); } return 0 ; }