题目描述
自从xxx吃完糖果后,他又开始改吃巧克力了,他每天想吃n个巧克力增加甜蜜值,他决定早上吃K个,晚上吃n-K个,每个巧克力在早上吃和在晚上吃的甜蜜值是不一样的,他想得到最大甜蜜值,并想知道最大的是多少
输入描述
第一行包含两个数n,K表示每天要吃的巧克力数量和要在早上吃的数量。(n <= 100000, K <= n)
第二行包含n个整数Ai(1 <= i <= n) 表示个第i个巧克力在早上吃可得到的甜蜜值 (Ai <= 100000)
第三行包含n个整数Bi(1 <= i <= n) 表示个第i个巧克力在晚上吃可得到的甜蜜值 (Bi <= 100000)
输出描述
输出仅一行包含一个整数表示ZZZZone能获得的最大甜蜜值。
示例
2 1
3 6
2 8 输出11
思路
贪心算法
总共n个巧克力是都要吃掉的,甜蜜值差最大的放在早上吃,差小的放在早上吃
代码
#include<bits/stdc++.h>
using namespace std;
struct node
{
int a;
int b;
};
bool cmp(const node &x,const node &y)
{
return x.a-x.b>y.a-y.b;
}
int main()
{
int n;
cin>>n;
int k;
cin>>k;
node*qiao=(node*)malloc(sizeof(node)*n);
for(int i=0;i<n;i++)
{
cin>>qiao[i].a;
}
for(int i=0;i<n;i++)
{
cin>>qiao[i].b;
}
sort(qiao,qiao+n,cmp);
long long int res=0;
for(int i=0;i<k;i++)
{
res+=qiao[i].a;
}
for(int i=k;i<n;i++)
{
res+=qiao[i].b;
}
cout<<res;
return 0;
}