題目連接數組
參考代碼:spa
#include <cstdio> #include <algorithm> using namespace std; typedef long long ll; const int maxn = 300000 + 5; int n, k; ll ans = 0, value[maxn]; bool cmp(const ll &a, const ll &b) { return a > b; } int main() { scanf("%d %d", &n, &k); for(int i = 1; i <= n; i ++) scanf("%I64d", &value[i]); for(int i = n; i; i --) value[i] += value[i + 1];//構造value後n項和的後綴和數組 sort(value + 2, value + n + 1, cmp);//對後n - 1項進行排序,由於第後n項和是必需要加的 for(int i = 1; i <= k; i ++) ans += value[i];//選取其中最大的n - 1項和第一項便可,就能夠實現將所選的數字加k次 printf("%I64d\n", ans); return 0; }