专栏文章

题解:AT_abc396_c [ABC396C] Buy Balls

AT_abc396_c题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mipxjem3
此快照首次捕获于
2025/12/03 19:34
3 个月前
此快照最后确认于
2025/12/03 19:34
3 个月前
查看原文

思路:

这题感觉比 D 题难,因为 D 会更模板一点。
这题要使用贪心做法。首先要读入两个数组 aabb,然后升序排列两个数组。接下来,如果 an+bn>0a_n + b_n > 0bn>0b_n > 0,那么把答案加上 an+bna_n + b_n,并把 nnmm 都减 11。最后把 aa 中还未统计过的数加入答案就行了。

代码:

CPP
#import<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[200005],b[200005],ans;
main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>m;
	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);
	while(n && a[n]+b[m]>0 && b[m]>0) ans+=a[n]+b[m],--n,--m;
	while(n && a[n]>0) ans+=a[n],--n;
	cout<<ans;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...