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

信息学奥赛题库- 分班

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

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

【题目描述】

校长给钱主任的分班条件是这样子的:

首先有$M$个学生,分数从高到低已经排序好了。

其次要分成至多$N$个班。

每个班必须要有至少$A$个至多$B$个小朋友。

一个班的学生,他们的分数必须是连在一起的。也就是说,如果第$3$个小朋友和第$5$个小朋友在一间教室,第$4$个小朋友也必须和他们在一起。

校长还给出了一个评定分班好不好的标准。

每个学生有一个敏感指数,$X[i](1≤i≤M)$。并且,有一个变量$Average =sum_{i=1}^Mfrac{X[i]}{M}$。为了方便计算,$Average$ 取下整,注意是先加起来再除,不是每次除再加。

每个教室有一个舒适程度$G[i]$ 。而$g[i]$ 表示的是第$i$个小朋友在哪个教室。

现在校长要求最小化评价指数$sum_{i=1}^{M}(X[i]-Average)^2×G[g[i]]$ 。

【输入】

本题目有多组数据。

第一行有一个整数$case(case≤10)$,表示有$case$组数据。

接下来对于每组数据的第一行有$4$个正整数,依次是$M,N,A,B$。

第二行有$M$个正整数,用空格隔开,分别是$X[1],X[2],…,X[M]$。

第三行有$N$个正整数,用空格隔开,分别是$G[1],G[2],…,G[N]$。

【输出】

对于每组数据,要输出三个正整数,以空格隔开,不同数据之间要换行。

三个正整数分别为$sigma,class,last$。分别表示最小的评价指数。在评价指数最小的情况下,安排的教室的最小数目。在评价指数、安排教师数目最小的情况下,最后一个教室的人数的最小数目。

【输入样例】

1
10 3 1 4 
16 11 12 13 10 15 16 17 18 14
4 5 1

【输出样例】

186 3 4

【提示】

【样例解释】

前4个,后4个,中间2个。

【数据规模】

编号 $M$ $N$ $A;B$ $X$ $G$
$1$ $5$ $1$ $1≤A≤B≤M$ $1≤X[i]≤100000$ $-1000≤G[i]≤1000$
$2$ $≤10$ ≤$3$
$3$ $≤100$ $≤10$
$4$ $≤1000$ $≤50$
$5$ $≤10000$ $≤200$ $0≤G[i]≤1000$
$6$
$7$
$8$ $-1000≤G[i]≤1000$
$9$
$10$

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