hdu 4502
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4502
dp[i]表示前i天的最大收入。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 const int N=110; 5 using namespace std; 6 int dp[N];//dp[i]表示前i天的最大收入 7 8 struct Node{ 9 int start,end; 10 int value; 11 }node[N*10]; 12 13 int cmp(const Node &a,const Node &b){ 14 return a.end<b.end; 15 } 16 17 int main(){ 18 int _case; 19 scanf("%d",&_case); 20 while(_case--){ 21 int m,n; 22 scanf("%d%d",&m,&n); 23 for(int i=0;i<n;i++){ 24 scanf("%d%d%d",&node[i].start,&node[i].end,&node[i].value); 25 } 26 memset(dp,0,sizeof(dp)); 27 sort(node,node+n,cmp); 28 for(int i=1;i<=m;i++){ 29 for(int j=0;j<n;j++){ 30 if(node[j].end>i)break; 31 dp[i]=max(dp[i],dp[node[j].start-1]+node[j].value); 32 } 33 } 34 printf("%d\n",dp[m]); 35 } 36 return 0; 37 }