题解 | #游游的k-好数组#

游游的k-好数组

https://ac.nowcoder.com/acm/problem/256766

根据间隔分组,也就是是一组的,然后对于每一个组内元素,由于操作只能够加,不能减,所以所有元素一定会变为最大值。

设每一个组的最大值为,个数为,总和为,那么代价为

那么求出所有组的总需求量,如果不够,那么直接返回

然后将扣除后剩下的贪心的全部分给一组,那么就只要枚举组,记录哪一个最大即可。

import sys
# 输入加速
input = sys.stdin.readline

if __name__ == '__main__':
    t = int(input())
    for _ in range(t):
        n, k, x = map(int, input().split())
        a = list(map(int, input().split()))
        mp = []
        for i in range(k):
            lst = []
            for j in range(i, n, k):
                lst.append(a[j])
            mp.append(lst)
        # 计算need
        need = 0
        sz = set()
        for lst in mp:
            if len(lst) > 1:
                need += len(lst) * max(lst) - sum(lst)
            sz.add(len(lst))
        if need > x:
            print(-1)
            continue
        x -= need
        #计算每一组变大后的最大值
        res = 0
        for lst in mp:
            res = max(x // len(lst) + max(lst),res)
        print(res)


全部评论

相关推荐

秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态
远程面试的尴尬瞬间
点赞 评论 收藏
分享
rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务