18分求助

P1250 种树

``` #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


|