题目:种树
思路:
贪心,优先把树种到区间相交处。
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 30000
#define maxm 5000
struct House{
int l,r,t;
bool operator < (const House& oth) const {
return r<oth.r||(r==oth.r&&l>oth.l);
}
};
int n,m;
House a[maxm+5];
int f[maxn+5]={0};
void readin(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].t);
}
sort(a+1,a+m+1);
}
int slv(){
int ans=0;
for(int i=1;i<=m;i++){
int x=0;
for(int j=a[i].l;j<=a[i].r;j++) x+=f[j];
x=a[i].t-x;
for(int j=a[i].r;j>=a[i].l&&x>0;j--){
if(!f[j]) f[j]=1,x--,ans++;
}
}
return ans;
}
int main(){
readin();
int ans=slv();
printf("%d",ans);
return 0;
}