刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

1.火中取栗
据法国诗人拉·封丹的寓言《猴子与猫》里说,猴子骗猫取火中的栗子,结果取出后被猴子吃了,猫却因此被烧掉了爪上的毛。
现在我们有 n 只炉子,每只炉子里烤着一些栗子。假设笨猫每次伸爪最多能从一只炉子里抓出 k 颗栗子,但会被烧掉 1 撮毛。问笨猫抓出所有的栗子最少要被烧掉多少撮毛?
时间限制:1000
内存限制:65536
输入
输入在第一行中给出 2 个正整数 n(≤ 100000)和 k(≤ 10),含义如题面所述。数字间以空格分隔。 随后一行给出 n 个不超过 1000 的正整数,其中第 i 个数字表示第 i 只炉子里烤的栗子的数量。
输出
在一行中输出笨猫抓出所有的栗子最少要被烧掉多少撮毛。
样例输入
5 2
3 4 8 1 15
样例输出
17

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

假设炉子的数量为 n,每次最多能取出的栗子数量为 k,第 i 个炉子的栗子数量为 a[i]。

  1. 读入 n 和 k 的值。
  2. 读入每个炉子的栗子数量 a[i],并对它们进行排序。
  3. 初始化被烧掉的撮毛数量 sum 为 0。
  4. 从最大的 a[i] 开始,取出 k 个栗子,被烧掉的撮毛数量为 k,将 sum 加上 k。
  5. 移动到下一个 a[i],重复步骤 4,直到所有的栗子都被取出。
  6. 输出 sum,即为笨猫抓出所有的栗子最少要被烧掉多少撮毛。

根据题目给定的样例输入,炉子的数量为 5,每次最多能取出 2 个栗子,炉子的栗子数量分别为 3、4、8、1、15。我们对炉子的栗子数量进行排序,得到 15、8、4、3、1。从 15 开始取,取 2 个栗子,被烧掉 2 撮毛,剩余 13 个栗子;从 8 开始取,取 2 个栗子,被烧掉 2 撮毛,剩余 6 个栗子;从 4 开始取,取 2 个栗子,被烧掉 2 撮毛,剩余 2 个栗子;从 3 开始取,取 1 个栗子,被烧掉 1 撮毛;从 1 开始取,不需要再被烧毛。总共被烧掉的撮毛数量为 2+2+2+1=7。因此,笨猫抓出所有的栗子最少要被烧掉 7 撮毛。

创作类型:
原创

本文链接:1.火中取栗据法国诗人拉·封丹的寓言《猴子与猫》里说,猴子骗猫取火中的栗子,结果取出后被猴子吃了,猫

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share