题库首页 › 蓝桥杯大赛(C语言) › 题目 11069

价值分组 题目描述 n 件物品排成一排,编号分别为:1、2、3...n的价值分别为:a1、a2、 a3...an 请将这 n件物品拆分为K组(不改变物品的顺序),要求每组内至少有一件物品,分别统计每组物品的价值之和,并找出其中的最大值。请设计一种分组方案,使这个最大值尽可能小,并输出这个最大值。 例如:n=5,表示有5 件物品,这5 件物品的价值分别是 6、1、3、8、4;K=2,表示要将这 5 件物品拆分为两组,有如下方案 [6]和[1,3,8,4],两组物品各自的价值之和为 6和 16,最大值为16; [6,1]和[3,8,4],两组物品各自的价值之和为 7和 15,最大值为15; [6,1,3]和[8,4],两组物品各自的价值之和为10和 12,最大值为 12; [6,1,3,8]和[4],两组物品各自的价值之和为 18 和 4,最大值为18; 其中第 3 种方案,价值之和的最大值 12 在4 种方案中最小,故输出12 输入格式 第一行输入一个整数n(1≤n≤1000),表示物品的数量 第二行输入 n 个整数a1、 a2,...an(1≤ai≤ 105),ai表示i号物品的价值,整数之间以一个空格隔开。 第三行输入一个整数k(1≤k≤n),表示将n件物品拆分的组数 输出格式 输出一个整数,表示按照题目要求得到的最大值 样例输入 5 6 1 3 8 4 样例输出 12

正确答案:参考程序(Python):价值分组。二分最大组和,判断能否分成≤K组(每组和≤mid)。min最大化。样例6,1,3,8,4,K=2→12。核心:二分+分组判断。

试卷来源:202408(第15届)蓝桥杯C++编程青少组(省赛_中级)真题

本卷相关题目

在线做题 同科目题库