题目链接: https://vjudge.net/problem/Aizu-2104
题解:
咋说啊,一言难尽,花了半小时写出来的,卡了十分钟才恍然大明白是排序。
具体就是让每个村子都通上电,变压器在的村子,与变压器连线点线长度为0,其他村子和变压器连线长度为村子之间的距离。
那就减去最大村子间距就好了,代码写出来,运行,看一下,细节直接按着运行结果现调。啊对了,我用int 提交不对,long 就可以。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
using namespace std;
int T;
long n, k;
long house[100002];
long dis[100002];int main()
{cin >> T;while (T--){cin >> n >> k;for (long i = 0; i < n; ++i){cin >> house[i];}memset(dis, 0, sizeof(dis));for (long i = 0; i < n - 1; ++i){dis[i] = house[i + 1] - house[i];}long ans = house[n - 1] - house[0];sort(dis, dis + n - 1);for (long i = 0; i < k -1; ++i){ans -= dis[n-2-i];}if (ans < 0)ans = 0;cout << ans << endl;}return 0;
}
今天也是元气满满的一天!good luck!