0
点赞
收藏
分享

微信扫一扫

AcWing 4397. 卡牌

zhongjh 2022-04-13 阅读 30
c++

题目链接:周赛46 第二题 卡牌

思路 :

        本题相比于其他周赛第二题是简单得多的,就是开个数组存储卡牌正反面的数之差,然后排一下序就行了。

        我采取的是反面减去正面,如果是负值则说明反面的值可以让总数值变小,反之则变大。

        在录入正面数值的时候,将正面数值依次加入到res(答案)中,然后再加上上述存储差值数组中的负值即可(同时我们要保证正面的牌数量至少有k张)

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
#define sum first
#define i second
int a[N],b[N],c[N],res=0;
int main(){
	int n,k;
	cin>>n>>k;
	for(int i=0;i<n;i++) {
		cin>>a[i];
		res+=a[i];
	}
	for(int i=0;i<n;i++) {
		cin>>b[i];
		c[i]=b[i]-a[i];
	}
	sort(c,c+n);
	for(int i=0;i<n-k&&c[i]<=0;i++) res+=c[i];
	cout<<res<<endl;
}
举报

相关推荐

0 条评论