题意:给一个字符串,对字符串重新排列使得该字符串含有的回文子串数目最多。
题解:先统计每种字符的个数,最开始卡在了如何组合两种或多种字符使回文子串最多,看官方题解,某种字符个数为X,包含X(X+1)/2个回文子串,只需要把每种字符放一起就行了。
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<queue>
#include<stack>
#include<cstring>
#include<string>
//#include<map>
typedef long long LL;
using namespace std;
char s[100000]; int n;
int cmp(char a, char b) {
return a > b;
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin >> n;
cin >> s;
sort(s, s+ n, cmp);
for (int i = 0; i < n; i++)cout << s[i];
}