陕西计算机学会SYAP2025年1月月赛-新手组T2 腊八粥

题目描述

南宋吴自牧《梦梁录》载:“此月八日,寺院谓之腊八。大刹等寺,俱设五味粥,名曰腊八粥。”

今年的腊月初八,小Y要给全家人熬制一锅腊八粥,于是小Y去菜市场采购了很多食材,包括桂圆、薏米、花生、莲子、糯米等等,一共 n n n 种食材,每种食材都有各自的份量。这锅腊八粥中的食材比例需要保持均衡,具体来说就是任意两种食材的份量相差最多不能超过 k k k。并且小Y一家都是大胃王,所以小Y还希望这锅腊八粥的份量能够尽可能多。

每种食材不一定要全部煮完,但需要保证每种都有。

请你帮小Y计算,他最多可以熬制多少份量的腊八粥。


输入格式

第一行两个数字 n , k n, k n,k ,表示食材的种数与份量的最大差值。

第二行是 n n n 个整数,其中 a i a_i ai 表示第 i i i 种食材的初始份量。

输出格式

一个整数,表示小Y可以熬制的最多份量。

样例输入 1

3 1
1 2 3

样例输出 1

5

样例输入 2

5 2
7 4 5 9 6

样例输出 2

27

样例输入 3

9 17
45 13 28 16 17 109 81 66 37

样例输出 3

224

数据范围

测试点编号 n n n
1 ∼ 12 1\sim 12 112 1 ≤ n ≤ 1 0 3 1\leq n\leq 10^3 1n103
13 ∼ 20 13\sim 20 1320 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1n105
  • 对于所有的测试点,均有 1 ≤ k , a i ≤ 1 0 4 1\leq k, a_i \leq 10^4 1k,ai104

解析

以最少的材料为基准,其他材料取最少材料+k和材料分量的最小值,详见代码:

#include<bits/stdc++.h>
using namespace std;
int n, k;
int a[100005];
int ans = 0;
int main() {
    cin >> n >> k;
    for(int i = 1; i <= n; i++) { //输入
        cin >> a[i];
    }
    sort(a + 1, a + n + 1); //排序
    for(int i = 1; i <= n; i++) {
        ans += min(a[i], a[1] + k); //取自己和a[1](最少的材料分量)+k的最小值
    }
    cout << ans;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长春高老师信奥工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值