D. Array and Operations
题目描述
题意
题目大概的意思是给你n个数,然后进行k次操作后,将在操作中未使用的数全都加到得分中,使得分最小。
这k次操作是选择两个数,x,y,然后将x/y向下取整(3.8取作3)后的结果加入到你的得分中。
昨天div3的一道题,写了40多分钟的c题结果wa了(自己还是太菜了), 果断放弃,转战d题,结果20分钟就写出来了。
题解
我们有k次机会将两个数变为他们的商,加入到得分中,因为x/y向下取整,可以想到1/10和9/10的结果都是0.所以我们的y优先选择最大的一批数,x选择次大的一批数,这样可以把较大的数消耗掉使得最后未进行操作的数直接加到得分中时最小。现在的关键是如何分批,因为有k次操作,所以有k个y,k个x,我们将数组从小到大排序后分为3个部分,最后k个数作为y,然后在第一个y前面取k个数作为与之对应的x,剩下的数直接加到得分中即可。
AC代码
/*@_krito*/
#include
using
共有 0 条评论