| 比赛 |
NOIP2025模拟赛4 |
评测结果 |
AAAAAAAAAAAAAAAA |
| 题目名称 |
Lunch Concert |
最终得分 |
100 |
| 用户昵称 |
郑霁桓 |
运行时间 |
3.078 s |
| 代码语言 |
C++ |
内存使用 |
39.52 MiB |
| 提交时间 |
2025-11-27 09:08:14 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,m,p,ps,ss;
__int128 ft[600005],bk[600005],b[600005],as;
struct pr{
long long p,w,d;
}a[200005];
vector<long long>t[600005];
inline bool c(pr x,pr y){
return x.p<y.p;
}
int main(){
freopen("Concert.in","r",stdin);
freopen("Concert.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].p>>a[i].w>>a[i].d;
b[++m]=a[i].p-a[i].d;
b[++m]=a[i].p;
b[++m]=a[i].p+a[i].d;
}
sort(a+1,a+n+1,c);
sort(b+1,b+m+1);
for(int i=1;i<=n;i++){
p=lower_bound(b+1,b+m+1,a[i].p+a[i].d)-b;
t[p].push_back(i);
p=lower_bound(b+1,b+m+1,a[i].p-a[i].d)-b;
t[p].push_back(-i);
}
for(int i=1;i<=m;i++){
ft[i]=ft[i-1]+ps*(b[i]-b[i-1]);
for(int j=0;j<t[i].size();j++){
if(t[i][j]>0||(t[i][j]<0&&!a[-t[i][j]].d)) ps+=a[t[i][j]].w;
}
}
ps=0;
b[m+1]=b[m];
for(int i=m;i>=1;i--){
bk[i]=bk[i+1]+ps*(b[i+1]-b[i]);
for(int j=0;j<t[i].size();j++){
if(t[i][j]<0) ps+=a[-t[i][j]].w;
}
}
as=1e28;
for(int i=1;i<=m;i++) as=min(as,ft[i]+bk[i]);
ss=as;
cout<<ss;
return 0;
}