18分求助
  • 板块P1250 种树
  • 楼主keruisi
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/10 21:39
  • 上次更新2023/11/3 10:39:08
查看原帖
18分求助
1010532
keruisi楼主2023/7/10 21:39
#include<bits/stdc++.h>
using namespace std;
struct U{
	int begin,end,tree;
}sz[100005];
int m,n,ans;
bool cmp(U i,U j){
	if (i.end<j.end) return 1;
	return 0;
}
int main(){
	cin>>m>>n;
	for (int i=1;i<=n;i++) cin>>sz[i].begin>>sz[i].end>>sz[i].tree;
	sort(sz+1,sz+n+1,cmp);
	int k=1;
	ans+=sz[1].tree; 
//	cout<<ans<<endl<<sz[1].begin<<" "<<sz[1].end<<" "<<sz[1].tree<<endl;
	for (int i=2;i<=n;i++){
		int qj=sz[i-k].end-sz[i].begin+1;
		if (qj>=sz[i].tree) {
			k++;
			continue;
		}
		else if (qj<=0) {
			k=1;
			ans+=sz[i].tree;
//			cout<<ans<<endl<<sz[i].begin<<" "<<sz[i].end<<" "<<sz[i].tree<<endl;
		}
		else if (qj>0&&qj<sz[i].tree) {
			k=1;
			ans+=sz[i].tree-qj;
//			cout<<ans<<endl<<sz[i].begin<<" "<<sz[i].end<<" "<<sz[i].tree<<endl; 
		}
	}
	cout<<ans<<endl;
	return 0;
} 
2023/7/10 21:39
加载中...