一种看似可行的贪心策略
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
struct node{
int b,e,t;
}a[N];
bool cmp(node x,node y){
return x.e<y.e;
}
bool f[N];//flag
int n,m,k,ans=0;
int main(){
std::ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
memset(f,0,sizeof f);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i].b>>a[i].e>>a[i].t;
sort(a+1,a+m+1,cmp);
for(int i=1;i<=m;i++){
k=0;
for(int j=a[i].b;j<=a[i].e;j++) if(f[j]) k++;
if(k>=a[i].t) continue;
for(int j=a[i].e;j>=a[i].b;j--){
if(!f[j]){
f[j]=1,k++,ans++;
if(k==a[i].t) break;
}
}
}
cout<<ans;
return 0;
}