33OJ
登录 注册

#ABC480F. 切蛋糕

切蛋糕

切蛋糕

题目描述

有 NN 个蛋糕,第 ii 个蛋糕的大小为 AiA_i。你要把这些蛋糕分给 MM 个人。

设所有蛋糕的大小之和为 S=A1+⋯+ANS=A_1+\dots+A_N,保证 SS 是 MM 的倍数。

你可以按任意顺序进行任意多次(包括 00 次)以下操作:

  • 选择一个蛋糕,把它任意切成两块(两块的大小不必是整数)。

操作结束后,你把切好的蛋糕分给这 MM 个人。请求出:为了让每个人分到的蛋糕大小之和都等于 SM\frac{S}{M},最少需要进行多少次操作。

形式化地说:

  • 给定正整数序列 A=(A1,…,AN)A=(A_1,\dots,A_N) 和正整数 MM,令 S=∑iAiS=\sum_i A_i。
  • 你可以进行任意多次以下操作:选择 1≤i≤∣A∣1\le i\le |A| 和实数 0<x<Ai0<x<A_i,删去第 ii 个数,并在序列末尾加入 xx 和 Ai−xA_i-x。
  • 请求出最少需要多少次操作,才能存在一个划分 P\mathcal{P} 满足:P\mathcal{P} 是 {1,2,…,∣A∣}\{1,2,\dots,|A|\} 的一个划分,且对每个 X∈PX\in\mathcal{P} 都有 ∑i∈XAi=SM\sum_{i\in X}A_i=\frac{S}{M}。

输入格式

第一行两个整数 N,MN, M。

第二行 NN 个整数 A1,A2,…,ANA_1, A_2, \dots, A_N。

输出格式

输出一个整数,表示最少需要的操作次数。

2 3
7 23
2

样例 1 解释

把大小为 2323 的蛋糕切成 1010 和 1313,再把大小为 1313 的蛋糕切成 1010 和 33,共操作 22 次。 此时蛋糕为 7,10,3,107,10,3,10,可以分成 {7,3}\{7,3\}、{10}\{10\}、{10}\{10\} 三组,每组大小都是 1010,而 10=7+23310=\frac{7+23}{3}。

4 2
1234 123 12 1
1

样例 2 解释

把大小为 12341234 的蛋糕切成 685685 和 549549,其余蛋糕不动。 此时可以分成 {549,123,12,1}\{549,123,12,1\} 和 {685}\{685\} 两组,总大小分别为 685685 和 685685。

数据范围

对于所有测试数据,保证:

  • 1≤N≤201\le N\le 20;
  • 1≤M≤1001\le M\le 100;
  • 1≤Ai≤1091\le A_i\le 10^9;
  • A1+⋯+ANA_1+\dots+A_N 是 MM 的倍数。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 N≤8N \le 8
7∼127 \sim 12 N≤16N \le 16
13∼2013 \sim 20 4040 无特殊限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。