求助,样例已过
查看原帖
求助,样例已过
661913
liwenxi1145144444楼主2024/7/12 14:30
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
vector<int> v1,v2;
int sumc[200005];
struct node{
	int p,w,d,id;
	bool operator < (node a){
		return p<a.p;
	}
}a[200005];
signed main(){
	freopen("P9025_2.in","r",stdin);
	freopen("out2.out","w",stdout);
	scanf("%lld",&n);
	v1.push_back(0);
	v2.push_back(0);
	for(int i=1;i<=n;i++){
		scanf("%lld%lld%lld",&a[i].p,&a[i].w,&a[i].d);
		a[i].id=i;
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		v1.push_back((a[i].p+a[i].d)*a[i].w);
		v2.push_back((a[i].p-a[i].d)*a[i].w);
		sumc[i]=sumc[i-1]+a[i].w;
	}
	for(int i=1;i<=n;i++){
		v1[i]+=v1[i-1];
	}
	for(int i=n-1;i>=1;i--){
		v2[i]+=v2[i+1];
	}
	cout<<"\n";
	int minn=LONG_LONG_MAX;
	for(int i=1;i<=n;i++){
		int c=a[i].p+a[i].d,dd=a[i].p-a[i].d;
		int l=0,r=n+1;
		while(l+1<r){
			int mid=(l+r)>>1;
			if(a[mid].p>c){
				r=mid;
			}else{
				l=mid;
			}
		}
		int t=r-1;
		l=0,r=n+1;
		while(l+1<r){
			int mid=(l+r)>>1;
			if(a[mid].p>dd){
				r=mid;
			}else{
				l=mid;
			}
		}
		int tt=r-1;
		cout<<c<<","<<c*sumc[t]-v1[t]+v2[t+1]-c*sumc[n]+c*sumc[t]<<" "<<dd<<","<<dd*sumc[tt]-v1[tt]+v2[tt+1]-dd*sumc[n]+dd*sumc[tt]<<"\n";
		minn=min(minn,min(c*sumc[t]-v1[t]+v2[t+1]-c*sumc[n]+c*sumc[t],dd*sumc[tt]-v1[tt]+v2[tt+1]-dd*sumc[n]+dd*sumc[tt]));
	}
	cout<<minn;
	return 0;
}

由暴力代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,p[200005],w[200005],d[200005];
signed main(){
	freopen("P9025_2.in","r",stdin);
	freopen("out1.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&p[i],&w[i],&d[i]);
	}
	cout<<"\n";
	int minn=LONG_LONG_MAX;
	for(int i=1;i<=n;i++){
		int c=p[i]+d[i],dd=p[i]-d[i],sum=0,sum1=0;
		for(int j=1;j<=n;j++){
			if(i!=j){
				sum+=max(0ll,(abs(c-p[j])-d[j])*w[j]);
				sum1+=max(0ll,(abs(dd-p[j])-d[j])*w[j]);
			}
		}
		cout<<c<<","<<sum<<" "<<dd<<","<<sum1<<"\n";
		minn=min(minn,min(sum,sum1));
	}
	cout<<minn;
	return 0;
}

用前缀和优化而来,二分是为了拆掉绝对值。求助!!!WA#2#6#14

2024/7/12 14:30
加载中...