P7874 题解

· · 题解

首先假设我们只有两个账号,那么只能这么发:12121212…(第i个数表示发第i个帖子的账号编号)

然后第一个数和第二个数是不能变的,然后假设我们又有了一个账号,那么我们肯定要选剩下的数中最大的。

所以我们对 a_3-a_n 排序,取出最大的 k-2 个数,加起来,然后再加上 a_1+a_2,就得到了答案。

Tips:开long long.

代码:

#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 10005
int a[maxn]; 
void inline solve() {
    int n, k;
    scanf("%d %d", &n, &k);
    for (int i = 0; i < n; i++) {
        scanf("%d", a + i);
    }
    long long ans = a[0] + a[1];
    sort(a + 2, a + n);
    for (int i = n - 1; i >= n - (k - 2); i--) {
        ans += a[i];
    }
    printf("%lld\n", ans);
}
int main() {
    int t;
    scanf("%*d %d", &t);
    for (int i = 1; i <= t; i++) {
        solve();
    }
    return 0;
}