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!

猜你喜欢

转载自www.cnblogs.com/cattree/p/9371050.html