列表

详情


NC14721. 装进肚子

描述

自从ZZZZone吃完糖果后,他开始改吃巧克力了,他每天想吃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能获得的最大甜蜜值。

示例1

输入:

2 1
3 6
2 8

输出:

11

说明:

早上吃第一个巧克力得到3甜蜜值,晚上吃第2个巧克力得到8的甜蜜值,所以最大可得到11的甜蜜值。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

matlab 解法, 执行用时: 720ms, 内存消耗: 51076K, 提交时间: 2022-09-13 06:34:07

input1=str2num(input('','s'));
n=input1(1);
k=input1(2);
i2=str2num(input('','s'));
i3=str2num(input('','s'));
cha=i2-i3;
[cha,shun]=sort(cha);

fprintf('%d',sum(i2(shun(n-k+1:n)))+sum(i3(shun(1:n-k))))

Python3 解法, 执行用时: 182ms, 内存消耗: 20240K, 提交时间: 2022-04-09 09:26:23

a,b=map(int,input().split())
l1=list(map(int,input().split()))
l2=list(map(int,input().split()))

for x in range(a):
    l1[x]-=l2[x]
    
l1.sort(reverse=True)
print(sum(l2)+sum(l1[:b]))

上一题