c语言写代码。这里有n根有一定长度的棍子。您的任务是修改棒,使每个棒具有相同的长度。 你可以延长或缩短每根棍子。两个操作都花费r,其中r是新长度和原始长度之间的差值。 最低总成本是多少? 输入 第一个输入行包含一个整数n:stick的数量。 然后有n个整数:pl,p2,……pn木的长度 输出 打印一个整数:最小总成本。 限制条件 1≤n≤2*10的五次方,1≤pi<10的9次方
时间: 2024-02-25 12:53:59 浏览: 272
有源码C语言输出一个字符串的长度.cpp
非常抱歉,我之前的回答有误,感谢您的指正。下面是一个新的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXN 200005
int a[MAXN];
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int n;
scanf("%d", &n);
long long sum = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
sum += a[i];
}
int avg = sum / n;
long long cost = 0;
for (int i = 0; i < n; i++) {
cost += abs(a[i] - avg);
}
printf("%lld\n", cost);
return 0;
}
```
这个代码的思路是先计算出所有棍子的平均长度,然后将每根棍子的长度减去平均长度,这样就可以将问题转化为将所有数变为0的最小代价。然后我们遍历每个数,将其变为平均长度的代价为其与平均长度的差的绝对值,最后将所有代价相加就是最小总成本了。
阅读全文