比赛 NOIP2025模拟赛4 评测结果 AAAAAAAAAAAAAAAA
题目名称 Lunch Concert 最终得分 100
用户昵称 梦那边的美好TE 运行时间 2.136 s
代码语言 C++ 内存使用 6.19 MiB
提交时间 2025-11-27 09:16:16
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const int N=2e5+10;
const double eps=1e-5;
long long n,p[N],w[N],d[N];
long long ans=1e18;
double f(double x){
	double res=0;
	for(int i=1;i<=n;i++){
		if(p[i]<=x&&p[i]+d[i]<=x){
			res+=(x-p[i]-d[i])*1.0*w[i];
		}
		if(p[i]>=x&&p[i]-d[i]>=x){
			res+=(p[i]-d[i]-x)*1.0*w[i];
		}
	}
	return res;
}
long long calc(long long x){
	long long res=0;
	for(int i=1;i<=n;i++){
		if(p[i]<=x&&p[i]+d[i]<=x){
			res+=(x-p[i]-d[i])*w[i];
		}
		if(p[i]>=x&&p[i]-d[i]>=x){
			res+=(p[i]-d[i]-x)*w[i];
		}
	}
	return res;
}
int main(){
	freopen("Concert.in","r",stdin);
	freopen("Concert.out","w",stdout); 
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld %lld %lld",p+i,w+i,d+i);
	}
	double l=-1e9,r=2e9;
	for(int i=0;i<=50;i++){
		double mid=(r-l)/3;
		double lmid=l+mid;
		double rmid=r-mid; 
		if(f(lmid)>f(rmid)){
			l=lmid;
		}else {
			r=rmid;
		}
	}
	long long L=floor(l),R=ceil(r);
	for(long long i=L;i<=R;i++){
		ans=min(ans,calc(i));
	}
	printf("%lld\n",ans);
	return 0;
}