1. 程式人生 > >CF1063A Oh Those Palindromes 奇技淫巧

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 }