简单dp。
代码:
#include<iostream>
#include<fstream>
using namespace std;
int n,m,r;
struct e{
int s,t,f;
};
e a[1001];
int cmp(const void *a,const void *b){
return (*(e *)a).s-(*(e *)b).s;
}
int dp[1001];
void read(){
// ifstream cin("in.txt");
int i,j,k;
cin>>n>>m>>r;
n=m;
for(i=0;i<n;i++)
cin>>a[i].s>>a[i].t>>a[i].f;
qsort(a,n,sizeof(e),cmp);
for(i=0;i<n;i++)
dp[i]=a[i].f;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
if(a[i].t+r<=a[j].s)
dp[j]=max(dp[j],dp[i]+a[j].f);
}
int res=0;
for(i=0;i<n;i++)
res=max(res,dp[i]);
cout<<res<<endl;
}
int main(){
read();
return 0;
}