CF1063A Oh Those Palindromes 奇技淫巧

传送门(当然上洛咕能搜到)

求指定字符串最多回文子串个数

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 }

猜你喜欢

转载自www.cnblogs.com/yuyanjiaB/p/9894510.html