| 比赛 |
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;
}