甜羊羊. 2024-03-22 16:28 采纳率: 45.5%
浏览 6
已结题

2024月赛:小李搬家

为什么错?错哪里了?因该怎么改?
题目描述
小李准备买若干件家具,每件家具都很重,于是找来了搬家公司来搬运,每件物品的搬运费用都不一样,已知搬运它们其中每一件的费用。

 现在搬家公司搞活动,可以让顾客每次任意选取2件商品。

但是2件商品只算一件商品的费用, 这个商品的搬运费用是将选出的2个商品的费用之和除以k的运算结果。

如此反复,直到只收一件商品的钱。 这个就是商店要付的费用,小李想尽可能的少付钱,以便这个月“不吃土”。所以请你为小李计算一下最少只用付多少钱。

输入
第一行输入n,k分别表示n件商品及被除数k 第二行输入n个数,分别为w1,w2.....wn表示每一件物品的搬运费
输出
输出一个数,表示最少付多少钱
样例输入 复制
5 2
1 2 3 4 5
样例输出 复制
1
提示
对于100%数据,n和k<=10000




#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

int main() {
    int n, k;
    cin >> n >> k;
    vector<int> c(n);
    for (int i = 0; i < n; i++) {
        cin >> c[i];
    }
    sort(c.begin(), c.end());
    int total_a = 0;
    while (c.size() > 1) {
        int i1 = c[0];
        int i2 = c[1];
        c.erase(c.begin(), c.begin() + 2);
           int new_a = round((i1 + i2) / double(k));
        c.push_back(new_a);
        total_a += new_a;
    }
    cout << total_a;
    return 0;
}



  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-22 16:28
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述: 小李要买若干件家具,每件家具搬运费用不一样。搬家公司搞活动,可以让顾客每次任意选取2件商品,但是2件商品只算一件商品的费用,以2件商品费用之和除以k的运算结果为新物品的搬运费用。这个操作一直执行到最后只剩下一件商品为止。求小李最少只用付多少钱。 输入: 第1行输入2个整数n和k(1 ≤ n ≤ 10000,1 ≤ k ≤ 10000),表示家具件数和除数k。 第2行输入n个整数,分别为w1,w2...wn,表示每件物品的搬运费(0 ≤ wi ≤ 1000000)。 输出: 输出一个整数,表示小李最少只用付多少钱。 思路: 题目要求任意选取2件商品来计算新的商品费用,因此每次需要找出最小的2个物品来计算。由于我们的目标是尽可能少地付钱,因此我们每次需要将费用小的2个物品相加再除以k,计算得到新的物品费用。 这个过程一直重复进行,直到只剩下1个物品为止。我们可以使用vector来存储物品搬运费用,每次选出费用最小的2个物品进行计算,并将新的物品费用放回vector中,直到只剩下1个物品为止。 代码实现: 参考代码如下:
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月2日
  • 创建了问题 3月22日

悬赏问题

  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 python的EOFError该怎么解决?
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包
  • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题
  • ¥15 layui数据重载无效
  • ¥15 寻找了解qq家园纵横四海的程序猿。
  • ¥15 optisystem
  • ¥15 VB.NET画图时的撤销编程