B. Little Girl and Game【1300 / 回文字符串 博弈论】

在这里插入图片描述
https://codeforces.com/problemset/problem/276/B
由于可以重新排列,然后双方又是最优选择,我们只需要考虑一下奇数个数的字母了,看有多少种,此时连忙想到了用map维护一下,统计个数,最后我们只要判断一下奇数个字母的个数是否为奇数或者不存在奇数个字母,那么此时先手是必赢的,反之后手赢

#include<bits/stdc++.h>
using namespace std;
map<char,int>mp;
int main(void)
{
    
    
	string s; cin>>s;
	for(int i=0;i<s.size();i++) mp[s[i]]++;
	bool flag=0;
	int sum=0;
	for(auto i=mp.begin();i!=mp.end();i++) if(i->second&1) sum++;
	if(sum==0) flag=1;//没有奇数个数的字母
	if(sum&1) flag=1;//奇数个数字母的个数是奇数
	if(flag) puts("First");
	else puts("Second");
	return 0;
}

Guess you like

Origin blog.csdn.net/bettle_king/article/details/121230373