传送门(当然上洛咕能搜到)
求指定字符串最多回文子串个数
Ssy太强了...
学到一个新东西 就是如果一个字符有x个
那么它能产生的最多的回文串个数为C(x,2)
可以理解为选择两个字母作为边界
然后发现 如果所有一样的字母全都拼在一起 那么总个数就是C(x,2)
所以答案就是一样的放一起就OK
Code:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 #include<string> 6 #define ms(a,b) memset(a,b,sizeof a) 7 #define rep(i,a,n) for(int i = a;i <= n;i++) 8 #define per(i,n,a) for(int i = n;i >= a;i--) 9 #define inf 1000000007 10 using namespace std; 11 typedef long long ll; 12 typedef double D; 13 #define eps 1e-8 14 ll read() { 15 ll as = 0,fu = 1; 16 char c = getchar(); 17 while(c < '0' || c > '9') { 18 if(c == '-') fu = -1; 19 c = getchar(); 20 } 21 while(c >= '0' && c <= '9') { 22 as = as * 10 + c - '0'; 23 c = getchar(); 24 } 25 return as * fu; 26 } 27 //head 28 int n; 29 char a[1000005]; 30 int main() { 31 n = read(); 32 scanf("%s",a+1); 33 sort(a+1,a+n+1); 34 puts(a+1); 35 return 0; 36 }