牛客竞赛习题:uu与糖果 [C语言解法]

链接:https://ac.nowcoder.com/acm/contest/46310/D?&headNav=acm
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

uu是一个伟大的魔法师,她有n堆糖果。
由于她想得到更多的糖果,她可以施展无数次魔法,魔法的效果是她可以选择任意一堆糖果,使得那堆糖果的数量增加h,如果有任何一堆糖果的数量在施展魔法后超过了k,uu就会永远失去释放魔法的能力。
uu想知道她最多能得到多少颗糖果?

输入描述:

每组输入的第一行为 n (1 <= n <= 2e6), k (1 <= k <= 1e9), h (0 <= h <= 1e9).
接下来一行为 n 个数字,代表每堆糖果的数量 ai (1 <= ai <= 1e9)

输出描述:

输出一个整数,代表uu能得到最多糖果的数量。

示例1

输入

3 9 1
1 3 5

输出

28

示例2

输入

3 4 2
1 5 2

输出

14


分析

注意

本题需要注意两个地方:

  1. 在所有的糖堆都到达上限后,还应该再最后加一个 h 。因为仅仅是在这个题目里得到最多的糖,如果在达到上限后再用魔法的话,能使糖果的数量再多一个 h 。而规则里没说一定不能失去魔法,即使最后因超过上限而失去魔法也没有关系。
  2. 在输入描述里 nk 都是 => 1,只有 h 是 => 0 。这说明存在着 h = 0 (即:用魔法糖果数量不增加)的情况。按所选择的算法的情况而定,可能需要考虑 h = 0 这一可能情况。

可能会有人对数据的范围抱有疑问。一般来说,现在的机器,int 的最大值是 231 ,即&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值