互换为什么不对
查看原帖
互换为什么不对
1128390
YingDragon_wjq楼主2025/7/2 16:46

这是AC代码:

#include<bits/stdc++.h>
#define N 200005
#define int long long
using namespace std;

int n,m,p,a[N],b[N],s[N],ans;

signed main()
{
	cin>>n>>m>>p;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>b[i];
	}
	sort(b+1,b+m+1);
	for(int i=1;i<=m;i++){
		s[i]=s[i-1]+b[i];
	}
	for(int i=1;i<=n;i++){
		int tmp=p-a[i];
		int qian=upper_bound(b+1,b+m+1,tmp)-b-1;
		ans+=s[qian]+a[i]*qian+p*(m-qian);
	}
	cout<<ans;
	return 0;
}

那为什么把A和B互换就不对呢?

#include<bits/stdc++.h>
#define N 200005
#define int long long
using namespace std;

int n,m,p,a[N],b[N],s[N],ans;

signed main()
{
	cin>>n>>m>>p;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		s[i]=s[i-1]+a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>b[i];
	}
	for(int i=1;i<=m;i++){
		int tmp=p-b[i];
		int qian=upper_bound(a+1,a+n+1,tmp)-a-1;
		ans+=s[qian]+b[i]*qian+p*(m-qian);
	}
	cout<<ans;
	return 0;
}
2025/7/2 16:46
加载中...