#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; const int MR=2e3+10; int n,V,L; int x[MR],v[MR],w[MR]; LL dp[MR][MR]; //dp[i][j]是到加油站i且油量剩j时的最少花费 int main(){ cin>>n>>V>>L; for(int i=1;i<=n;i++){ cin>>x[i]>>v[i]>>w[i]; } x[n+1]=L; memset(dp,0x3f,sizeof(dp)); dp[0][V]=0; for(int i=0;i<=n;i++){ for(int j=0;j<=V;j++){ int t=x[i+1]-x[i]; //不加油直接出发,到下个站要消耗t if(j>=t) dp[i+1][j-t]=min(dp[i+1][j-t],dp[i][j]); //加油后出发,到下个站剩余 min(j+v[i],V)-t if(min(j+v[i],V)>=t){ dp[i+1][min(j+v[i],V)-t]=min(dp[i+1][min(j+v[i],V)-t],dp[i][j]+w[i]); } } } LL ans=1e18; for(int j=0;j<=V;j++) ans=min(ans,dp[n+1][j]); if(ans<1e18) cout<