dp题,先按开始时间给他排个序,两个for循环中,i<m和j<i,如果这样的话,随着i的增大,便会一步步往前链接可以排进来的数据
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=1005;
struct node{
int s;
int e;
int w;
}a[MAXN];
int dp[MAXN];
bool cmp(node a,node b)
{
if(a.s==b.s)
return a.e<b.e;
return a.s<b.s;
}
int main()
{
int n,m,r;
cin>>n>>m>>r;
int ans=-100;
for(int i=0;i<m;i++)
cin>>a[i].s>>a[i].e>>a[i].w;
sort(a,a+m,cmp);
/*
for(int i=0;i<m;i++)
cout<<a[i].s<<" "<<a[i].e<<" "<<a[i].w<<endl;
*/
for(int i=0;i<m;i++)
dp[i]=a[i].w;
for(int i=0;i<m;i++)
{
for(int j=0;j<i;j++)
{
if(a[j].e+r<=a[i].s)
dp[i]=max(dp[i],dp[j]+a[i].w);
}
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
return 0;
}