題目鏈接:? 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!