Country Road Aizu - 2104
题目链接: 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!
我想要变得高一点,最好能伸手给你一片天。