```
#include<bits/stdc++.h>
using namespace std;
struct data
{
int beg,end,num;
}d1[500005];
bool area[300005];
bool cmp(data x,data y)
{
if(x.end==y.end) return x.beg>y.beg;
return x.end<y.end;
}
int main()
{
int n,h,tot=0;
cin>>n>>h;
for(int i=1;i<=h;i++)
{
cin>>d1[i].beg>>d1[i].end>>d1[i].num;
}
sort(d1+1,d1+h+1,cmp);
for(int i=1;i<=h;i++)
{
int ko=d1[i].end;
for(int j=d1[i].beg;j<=d1[i].end;j++)
{
if(area[j]) d1[i].num--;
}
while(d1[i].num!=0)//当你减得时候,可能已经是负数了,所以会死循环。
{
area[ko]=1;//有可能这里已经有树了,需加判断是否有树,才做area[ko]=1,d1[i].num--,tot++;
ko--;
d1[i].num--;
tot++;
}
}
cout<<tot;
return 0;
}
```
@[Turing_Huangrunzhe](/user/356883)
by 向着AC勇敢前进 @ 2021-07-22 15:03:47
@[jiangkunxi](/user/543944) 谢谢大佬
by Turing_Huangrunzhe @ 2021-07-22 15:27:20