社区讨论

关于今天下午月赛T3

学术版参与者 9已保存回复 33

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
33 条
当前快照
1 份
快照标识符
@lo2pr98b
此快照首次捕获于
2023/10/23 17:46
2 年前
此快照最后确认于
2023/11/09 21:34
2 年前
查看原帖
写了一个贪心。感觉没有问题。
但是大样例没过。只拿了16分
求锐评。
CPP
#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
#define int long long
int a[N],b[N];
signed main()
{
	int n,m,k;
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)	cin>>a[i];
	for(int i=1;i<=m;i++)	cin>>b[i];
	sort(a+1,a+n+1),sort(b+1,b+m+1);
	int l1=1,r1=n,l2=1,r2=m,ans=0;
	while(1){
		if(l1>r1){
			for(int i=l2;i<=r2;i++)	ans+=b[i];
			break;
		}
		if(l2>r2){
			for(int i=l1;i<=r1;i++)	ans+=a[i];
			break;
		}
		if(a[r1]*2>b[r2]+k)	ans+=(a[r1]*2+b[l2]),r1--,l2++;
		else if(a[r1]*2<b[r2]+k)	ans+=(a[l1]+b[r2]+k),l1++,r2--;
		else{
			if(a[l1]>=b[l2])	ans+=(a[r1]*2+b[l2]),r1--,l2++;
			else	ans+=(a[l1]+b[r2]+k),l1++,r2--;
		}
	}
	cout<<ans<<endl;
	return 0;
}

回复

33 条回复,欢迎继续交流。

正在加载回复...