[辽宁省程序设计竞赛]F 最长回文串
F-最长回文串_2020 年第一届辽宁省大学生程序设计竞赛 (nowcoder.com)https://ac.nowcoder.com/acm/contest/8440/F
#include<bits/stdc++.h>
using namespace std;
unordered_map<string, int> mp;
bool check(string s)
{
int letter[26] = {0};
int cntOdd = 0;
for(auto c : s) letter[c-'a']++;
for(int i = 0; i < 26; i++){
if(letter[i]&1) cntOdd++;
}
if(cntOdd > 1) return false;
else return true;
}
int main()
{
int n, m;
string s;
cin >> n >> m;
while(n --)
{
cin >> s;
sort(s.begin(), s.end());
mp[s] ++;
}
int res = 0;
int ret = 0;//是否有出现次数为奇数的字符串入选
for(auto t : mp)
{
if(t.second&1){
res += (t.second-1)*m;
if(check(t.first)&&!ret){
res += m;
ret = 1;
}
}else{
res += t.second*m;
}
}
cout << res;
return 0;
}
本文来自博客园,作者:泥烟,CSDN同名, 转载请注明原文链接:https://www.cnblogs.com/Knight02/p/15799073.html