2 条题解
-
1
枚举前缀哈希O1判断回文
int t; t =1; f[0]=1; for(int i=1;i<N;i++){ f[i] = f[i-1]*ps; } while(t--){ string s; cin >> s; if(s.size()==1){ cout << s << endl; return 0; } ull p = 0,q = 0; int now = 0; for(int i=0;i<s.size();i++){ p = p*ps + (s[i]-'a'); q = 1ull*(s[i]-'a')*f[i]+q; if(p==q){ now = max(i,now); } } for(int i=s.size()-1;i>now;i--){ cout << s[i]; } cout << s << endl; } return 0;
信息
- ID
- 591
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 172
- 已通过
- 16
- 上传者