HDOJ 5340 Three Palindromes
来源:互联网 发布:网络协议的作用 编辑:程序博客网 时间:2024/05/16 10:49
For each test case , there is an single line contains a string S which only consist of lowercase English letters.
2abcabaadada
YesNo
题目的意思是看一个字符串可以不可以分成三个回文串、
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;int p[44000],n;char str[44444];void pk(){ int i; int mx = 0; int Id; for(i=1; i<n; i++) { if( mx > i ) p[i] = min( p[2*Id-i], mx-i ); else p[i] = 1; for(; str[i+p[i]] == str[i-p[i]]; p[i]++) ; if( p[i] + i > mx ) { mx = p[i] + i; Id = i; } }}char ch[22222];int p2[22222];bool dp[22222][4];int main(){ int T; scanf("%d",&T); while(T--) { scanf("%s",ch+1); int len=strlen(ch+1); int len2=len*2+1; for(int i=1;i<=len;i++) { str[i*2-1]='#'; str[i*2]=ch[i]; } str[len2]='#'; str[len2+1]='\0'; str[0]='$'; n=len2+1; pk(); bool ans=false; for(int i=1;i<=len-2;i++) { if(ans)break; int center=i+1; if(p[center]-1==i) { for(int j=i+1;j<=len-1;j++) { if(ans)break; int ct=((i+1)*2+j*2)/2; if(p[ct]-1>=j-i) { int nct=len+(j+1); if(p[nct]-1>=len-j)ans=true; } } } } if(ans)printf("Yes\n"); else printf("No\n"); }}
一个时间为(log n)的回文串的算法:https://www.baidu.com/link?url=xBybNJBbPas7PgjpomF-URWaxZ30x3qxSmGJ9nRbf2BBmiqZJ1MiP45hZI72Y_KBQt4W1STz6T7E7hEfFHdC8O0BvEkniYcKd12kg4zXzDW&wd=&eqid=8306f46b0000f6600000000455bd9c27
- HDOJ 5340 Three Palindromes
- HDOJ 5430 Three Palindromes
- hdu 5340 Three Palindromes
- hdu 5340 Three Palindromes
- hdu 5340 Three Palindromes
- hdu 5340 Three Palindromes 【Manacher】
- Three Palindromes
- hdu 5340 Three Palindromes(manacher)
- HDU 5340 Three Palindromes(Manacher乱搞)
- [HDU 5340] Three Palindromes 最长回文串
- HDU 5340-Three Palindromes(Manacher算法)
- hdu-5340 Three Palindromes(Manacher 算法)
- HDU 5340 Three Palindromes (manacher算法)
- hdu 5340 Three Palindromes(manachar)
- HDU 5340 Three Palindromes 暴力+Manacher
- HDU5340.Three Palindromes
- HDU5340 Three Palindromes
- HDU5340-Three Palindromes
- java之super用法
- 给Nsstring增加一个类方法:计算某个字符串中的阿拉伯数字的个数
- 字符、字符集、编码——Something Every Programmer Should Know About
- 进程间通信
- 机器学习与数据挖掘工程师的发展方向总结
- HDOJ 5340 Three Palindromes
- 趣味数组(二)
- PostgreSQL JDBC:查询和处理结果
- MD5 C++源码
- iOS开发笔记---深入浅出 iOS 之多线程 NSThread
- 欢迎使用CSDN-markdown编辑器
- 【Qt OpenGL教程】05:3D模型
- VS2010中的调试技巧总结
- Codeforces 542 D. Superhero's Job