比赛 2026.1.8 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 区间价值 最终得分 100
用户昵称 彭欣越 运行时间 0.863 s
代码语言 C++ 内存使用 4.55 MiB
提交时间 2026-01-08 21:26:03
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100010;
int n,dp[N];
struct node {
	int l,r,w;
}a[N];
bool cmp (node x,node y) {
	if (x.r==y.r) return x.l<y.l;
	return x.r<y.r;
}
int get (int x,int t) {
	int l=0,r=t;
	while (l<r) {
		int mid=(l+r+1)/2;
		if (a[mid].r<x) l=mid;
		else r=mid-1; 
	}
	return l;
}
int main () {
	freopen("sum.in","r",stdin);
	freopen("sum.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin >> n;
	//ll sum=0;
	for (int i=1;i<=n;i++) {
		cin >> a[i].l >> a[i].r >> a[i].w;
		//sum+=a[i].w;
	}
	//cout << sum <<endl;
	sort(a+1,a+1+n,cmp);
	//dp[1]=a[1].w;
	for (int i=1;i<=n;i++) {
		dp[i]=dp[i-1];
		ll t=get(a[i].l,i-1);
		//cout << t <<endl;
		dp[i]=max(dp[i],dp[t]+a[i].w);
	}
	cout << dp[n] <<endl;
	return 0;
}