我样例组对了三个答案,请求dalao帮个忙。
下列是蒟蒻的代码:
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
typedef long long ll;
vector <ll> vec[200010];
ll t,n,k,x;
ll least_sum = 0;
ll first_sum = 0;
void dfs(ll num)
{
if(num == k)
return;
for(ll i = 2;i < n;i++)
least_sum += vec[x][i];
for(ll i = 0;i < n - 1;i++)
first_sum += vec[x][i];
if(least_sum > first_sum)
{
for(ll i = 0;i < n - 2;i++)
vec[x][i] = vec[x][i + 2];
n -= 2;
}
else
{
vec[x][n - 1] = 0;
n--;
}
dfs(num + 1);
}
int main()
{
cin >> t;
for(x = 1;x <= t;x++)
{
cin >> n >> k;
for(ll j = 0;j < n;j++)
{
ll y;
cin >> y;
vec[x].push_back(y);
}
sort(vec[x].begin(),vec[x].end());
dfs(0);
cout << max(first_sum,least_sum) << '\n';
least_sum = 0,first_sum = 0;
}
return 0;
}
(提示:本题要在Codeforces提交)