为什么错?错哪里了?因该怎么改?
题目描述
小李准备买若干件家具,每件家具都很重,于是找来了搬家公司来搬运,每件物品的搬运费用都不一样,已知搬运它们其中每一件的费用。
现在搬家公司搞活动,可以让顾客每次任意选取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;
}
2024月赛:小李搬家
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 让阿豪来帮你解答,本回答参考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个物品为止。 代码实现: 参考代码如下:解决评论 打赏 举报无用 1
悬赏问题
- ¥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画图时的撤销编程