uestc Palindromic String

字符串hash
因为如果一个字符串是回文串,那么正着做哈希和反着做哈希结果应该一样。于是我们先正反各做一边哈希。
如果判断出来一个字符串是回文穿那么这个字符串的前半部分和后半部分的重数一定相同,于是当前位置的字符串回文重数f[i]就等于f[i/2]+1。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<cstdlib>
 7 #include<queue>
 8 #include<vector>
 9 #include<map>
10 #include<stack>
11 #include<string>
12
13 using namespace std;
14
15 const int MOD=100000009;
16 const int step=127;
17
18 long long ans;
19 int len;
20 char s[2000007];
21 int p[2000007];
22 long long hl[2000007];
23 long long hr[2000007];
24 long long mr[2000007];
25
26 int main(){
27     scanf("%s",s+1);
28     ans=0;
29     len=strlen(s+1);
30     memset(p,0,sizeof(p));
31     memset(hl,0,sizeof(hl));
32     memset(hr,0,sizeof(hr));
33     memset(mr,0,sizeof(mr));
34     for (int i=1;i<=len;i++){
35             hl[i]=(hl[i-1]*step+s[i])%MOD;
36     }
37     for (int i=len;i>=1;i--){
38             hr[i]=(hr[i+1]*step+s[i])%MOD;
39     }
40     mr[0]=1;
41     for (int i=1;i<=len;i++){
42             mr[i]=(mr[i-1]*step)%MOD;
43     }
44     for (int i=1;i<=len;i++){
45             if (hl[i]==((hr[1]-hr[i+1]*mr[i])%MOD+MOD)%MOD){
47                     p[i]=p[i/2]+1;
48                     ans+=p[i];
49             }
50             else{
51                     p[i]=0;
52             }
53     }
63     printf("%lld\n",ans);
64     return 0;
65 }
66 /*
67 CCeCeCCCee
68 */
时间: 2024-12-18 04:40:23

uestc Palindromic String的相关文章

2015 UESTC 搜索专题M题 Palindromic String 马拉车算法

Palindromic String Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Description 秋实大哥喜欢探索新鲜事物,最近他发明了一种新型回文串,叫K重回文串!今天他想用它来考考小朋友们. 秋实大哥给出了与K重回文串有关的信息 任何字符串都属于0重回文串,包括空字符串.    一个长度为N的字符串S,S是K(k≥1)重回文串,当且仅当S是回文串,且其长

UESTC_Palindromic String 2015 UESTC Training for Search Algorithm &amp; String&lt;Problem M&gt;

M - Palindromic String Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 128000/128000KB (Java/Others) Submit Status 秋实大哥喜欢探索新鲜事物,最近他发明了一种新型回文串,叫K重回文串!今天他想用它来考考小朋友们. 秋实大哥给出了与K重回文串有关的信息 任何字符串都属于0重回文串,包括空字符串. 一个长度为N的字符串S,S是K(k≥1)重回文串,当且仅当S是回文串,且其

Java Longest Palindromic Substring(最长回文字符串)

假设一个字符串从左向右写和从右向左写是一样的,这种字符串就叫做palindromic string.如aba,或者abba.本题是这种,给定输入一个字符串.要求输出一个子串,使得子串是最长的padromic string. 下边提供3种思路 1.两側比較法 以abba这样一个字符串为例来看,abba中,一共同拥有偶数个字.第1位=倒数第1位.第2位=倒数第2位......第N位=倒数第N位 以aba这样一个字符串为例来看,aba中.一共同拥有奇数个字符.排除掉正中间的那个字符后,第1位=倒数第1

HDU 4426 Palindromic Substring

Palindromic Substring Time Limit: 10000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 442664-bit integer IO format: %I64d      Java class name: Main In the kingdom of string, people like palindromic strings very much. They

Longest Palindromic Substring - 字符串中最长的回文字段

需求:Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring. 如果一个字符串从左向右写和从右向左写是一样的,这样的字符串就叫做palindromic string 判断回文数,中间开花.定一个中心,向两边散

HDOJ 5421 Victor and String 回文串自己主动机

假设没有操作1,就是裸的回文串自己主动机...... 能够从头部插入字符的回文串自己主动机,维护两个last点就好了..... 当整个串都是回文串的时候把两个last统一一下 Victor and String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/262144 K (Java/Others) Total Submission(s): 30    Accepted Submission(s): 9 Probl

ZOJ 3661 Palindromic Substring(回文树)

Palindromic Substring Time Limit: 10 Seconds      Memory Limit: 65536 KB In the kingdom of string, people like palindromic strings very much. They like only palindromic strings and dislike all other strings. There is a unified formula to calculate th

5. Longest Palindromic Substring - Medium

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. Example 2: Input: "cbbd"

Girls&#39; research(manacher)

Girls' research Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1160    Accepted Submission(s): 448 Problem Description One day, sailormoon girls are so delighted that they intend to research a