CF1063A Oh Those Palindromes

CF1063A Oh Those Palindromes

 

 

给你一个字符串,让你重新给这些字符排序,使得排序后回文子串的个数尽量多,多解输出一组即可

 

 

还是太弱啦,看了题解

首先只有一种字符$a$,那么就是$aa$

考虑加入一个新的字符,$aab$和$aba$

原回文串的回文子串的个数是$3$

那么插入中间得到的回文子串的个数是$3$

而插入一边得到的回文子串的个数是$4$

 

如果这个原回文字符是奇数个,即$aaa$

考虑将$b$插入其中,$abaa$或$aaab$

其回文子串个数分别是$6$和$7$

 

可见插入中间其得到的方案数反而不会增加,甚至会导致其中的有些字符会不匹配

 

结论是:使每一个字符尽量独立得到的答案才是最优的

 

#include<bits/stdc++.h>

using namespace std;

int n;
char a[100005];

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++) cout<<a[i];
    
    
    return 0;
}

 

posted @ 2018-10-23 19:36  清风我已逝  阅读(164)  评论(0编辑  收藏  举报