C. Game of Mathletes

题目链接:https://codeforces.com/contest/2060/problem/C

题意:

给定一个长度为n的数组和一个固定数值k。
每轮alice从中选择一个数字并擦除,bob选择一个数值并擦除
如果他们两个选择的数字加起来等于k,那么分数+1
alice要让得分尽量小,bob要让得分尽量大,求最终得分
并且n为偶数

思路:

alice总是趋向于选择 那些无法与其他数组合得到k/可以组合但是是多余的那几个 的数字
那么此时bob也会选择 那些无法与其他数组合得到k/可以组合但是是多余的那几个 的数字
这些数字是成对的
那么就剩下可以组合成k的数字对
此时数字对个数即为最终分数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+5;
int t;
int arr[maxn];

signed main()
{
	ios::sync_with_stdio(false),cin.tie(0);
	cin>>t;
	while(t--){
		map<int,int>mp;
		int n,k;cin>>n>>k;
		for(int i=0;i<n;i++){
			int x;cin>>x;
			mp[x]++;
			arr[i]=x;
		}
		
		int ans=0;
		for(int i=0;i<n;i++){
		int v=min(mp[arr[i]],mp[k-arr[i]]);if(v<=0)continue;
		if(arr[i]==k-arr[i])v/=2;
		ans+=v;
		mp[arr[i]]-=v;	
		mp[k-arr[i]]-=v;
		}
		
		cout<<ans<<endl;
	}
	return 0;
}


posted @   Marinaco  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示