.article-info-tag,button{text-transform:uppercase}.day,.postMeta,.postSticky{position:relative}.postTitle a:link,html{-webkit-tap-highlight-color:transparent}#blog-calendar,.code-copay-btn,.code-hljs-len,.hidden{visibility:hidden}#EntryTag,#blogTitle h1{margin-top:20px}#EntryTag a,.postSticky{background:#6fa3ef}#blogTitle h1 a:hover,.dayTitle a,a,a:active,a:link,a:visited{color:#5c8ec6}#calendar table a:hover,#navList a:hover,.postDesc a:hover,a:active,a:hover,a:link,a:visited,button{text-decora…ryTag a:visited{color:#666}#BlogPostCategory a,#EntryTag a{height:20px;line-height:20px;color:#fff!important;padding:3px 5px;border-radius:3px;margin:2px 5px 0;text-decoration:none;font-size:14px}#BlogPostCategory a:hover,#EntryTag a:hover{transition:all .3s linear 0s;opacity:.8}#topics .postDesc{padding-left:0;width:100%;text-align:left;color:#666;margin-top:5px;background:0 0}.feedbackListSubtitle-louzhu:after,.feedbackListSubtitle:after,.feedbackListSubtitle:before{top:11px;right:100%;left:-1

CF1504A Déjà Vu 题解

\(\text{Description}\)

多组询问,每次给定一个长度为 \(n\) 的字符串,求一种方案使得加入一个字符 a 后使其不是回文串,无解输出 NO

限制

\(1\le T \le 10^4,1\le \sum n \le3\times 10^5\)

\(\text{Solution}\)

由于 \(n\) 的范围比较小,我们可以考虑枚举 a 出现的位置,然后判断加入之后是否是回文串即可。

如何判断回文串?

只要在 a 的对应位置不是 a 就不是回文串。

时间复杂度:\(\Theta(\sum n)\)

\(\text{Code}\)

inline void solve() {
    int pos = 0 ;
    const int len = strlen(s+1) ;
    for(int i = 1;i <= len;++i) if(s[len+1-i] != 'a') { pos = i ;break;}//寻找位置,找到一个就可以
    if(!pos) return cout << "NO\n",void() ;
    cout << "YES\n" ;
    for(int i = 1;i < pos;++i) cout << s[i] ;
    cout << 'a' ;
    for(int i = pos;i <= len;++i) cout << s[i] ;
    cout << '\n' ;
}
posted @ 2021-04-08 19:30  feicheng  阅读(55)  评论(0编辑  收藏  举报