最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 太空飞船

C++ 少儿编程 1186浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

小诚准备设计一艘环形的太空飞船,由$N$个舱室顺序组成。第$i$个舱室的设计长度为$L_i$。为了给飞船提供能量,要在飞船上装置$K$个太空能量吸收器。

这些吸收器应该尽量均匀地分散在飞船表面。也就是说,小诚要把飞船所有$N$个舱室划分成 $K$个部分(每个部分包括连续一段舱室),并给每个部分配置一个能量吸收器。设第$i$个部分舱室的长度之和为$s_i$,则要令方差$sum_{i=1}^{k}(s_i-s_{avg})^2$ 尽量小。其中$s_{avg}$ 是$K$个部分的平均长度。

可是,这个问题对于小诚来说太难了。你能否帮助他完成设计呢?

为方便起见,输出方差最小值与K的平方的乘积。

【输入】

第一行,两个整数 $N,K$。

第二行,$N$个整数$L_1, L_2, …, L_N$,由空格隔开。依次表示每个舱室的长度。

【输出】

输出一行,为一个整数,表示方差最小值与$K^2$的乘积。

【输入样例】

5 2
4 2 6 1 3

【输出样例】

0

【提示】

【输入样例2】

5 3
4 2 6 1 3

【输出样例2】

24

【样例解释】

第一组样例。要将飞船分为$2$段,最优划分方法为$[2 6] [1 3 4]$。

第二组样例。要将飞船分为$3$段,最优划分方法为$[4 2] [6] [1 3]$。

【数据规模】

本题一共有10 个测试点。

下表是每个测试点的数据规模:

#1 N=1000 K=2 #6 N=50 K=6
#2 N=100000 #7 N=100 K=7
#3 N=100 K=3 #8 N=200 K=10
#4 N=100000 #9 N=300 K=15
#5 N=300000 #10 N=400 K=20

对于100%的数据,$1≤L_i≤1000$。

您必须 登录 才能发表评论!