求助qaq
  • 板块P1250 种树
  • 楼主南瓜桐
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/11/6 16:38
  • 上次更新2023/11/4 01:16:08
查看原帖
求助qaq
439327
南瓜桐楼主2021/11/6 16:38
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct node {
	int st;
	int ed;
	int num;
}a[5010];
int n,h;
bool cmp(node x,node y){
	if(x.ed==y.ed){
		return x.st>y.st;
	}else{
		return x.ed<y.ed;
	}
}
int main(){
	scanf("%d%d",&n,&h);
	for(int i=1;i<=h;i++){
		scanf("%d%d%d",&a[i].st,&a[i].ed,&a[i].num);
	}
	sort(a+1,a+1+n,cmp);
	int ans=a[1].num;
	for(int i=2;i<=h;i++){
		int sum=0;
		for(int j=i-1;j>=1;j--){
			if(a[j].st>a[i].ed){
				break;
			}else if(a[i].st<=a[j].st){
				sum+=a[j].num;
			}else if(a[i].st<=a[j].ed){
				if(a[j].num<=(a[j].ed-a[i].st+1)){
					sum+=a[j].num;
				}else{
					sum+=a[j].ed-a[i].st+1;
				}
			}
		}
		if(sum>=a[i].num) {
			a[i].num=0;
		}else{
			a[i].num-=sum; 
			ans+=a[i].num;
		}
	}
	cout<<ans;
	return 0;
}
/*
9
4
1 4 2
4 6 2
8 9 2
3 5 2
*/
2021/11/6 16:38
加载中...