n = int(input()) m = int(input()) a = list(map(int,input().split())) b = list(map(int,input().split())) newl = [] prem = [] #维护前m项ai-m*bi最小值 for i in range(len(a)): newl.append((a[i],b[i])) newl = sorted(newl,key=lambda x:(x[1],x[0]),reverse=True) for i in range(m): prem.append([newl[i][0]-i*newl[i][1],i]) for i in range(m,n): minmum = min(prem) index = prem.index(minmum) if newl[i][0]-(m-1)*newl[i][1]>minmum[0]: del prem[index] for ind in range(index,m-1): prem[ind][0] += newl[prem[ind][1]][1] prem.append([newl[i][0]-(m-1)*newl[i][1],i]) else:continue print(sum([i[0] for i in prem])) 这么做不知道对不对。。考试的时候没写完,全当抛砖引玉吧。。。。
点赞 评论

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务