CF1832B Maximum Sum 求助!!!
查看原帖
CF1832B Maximum Sum 求助!!!
948216
ZackofZHOU楼主2023/7/11 14:56

我样例组对了三个答案,请求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提交)

2023/7/11 14:56
加载中...