• HDU 3948


    #include<bits/stdc++.h>
    using namespace std;
    
    const int MAXN = 100005 ;
    const int N = 26 ;
    
    struct Palindromic_Tree {
        int next[MAXN][N] ;
        int fail[MAXN] ;
        int cnt[MAXN] ;
        int num[MAXN] ;
        int len[MAXN] ;
        int S[MAXN] ;
        int last ;
        int n ;
        int p ;
    
        int newnode ( int l ) {
            for ( int i = 0 ; i < N ; ++ i ) next[p][i] = 0 ;
            cnt[p] = 0 ;
            num[p] = 0 ;
            len[p] = l ;
            return p ++ ;
        }
    
        void init () {
            p = 0 ;
            newnode (  0 ) ;
            newnode ( -1 ) ;
            last = 0 ;
            n = 0 ;
            S[n] = -1 ;
            fail[0] = 1 ;
        }
    
        int get_fail ( int x ) {
            while ( S[n - len[x] - 1] != S[n] ) x = fail[x] ;
            return x ;
        }
    
        void add ( int c ) {
            c -= 'a' ;
            S[++ n] = c ;
            int cur = get_fail ( last ) ;
            if ( !next[cur][c] ) {
                int now = newnode ( len[cur] + 2 ) ;
                fail[now] = next[get_fail ( fail[cur] )][c] ;
                next[cur][c] = now ;
                num[now] = num[fail[now]] + 1 ;
            }
            last = next[cur][c] ;
            cnt[last] ++ ;
        }
    
        void count () {
            for ( int i = p - 1 ; i >= 0 ; -- i ) cnt[fail[i]] += cnt[i] ;
            
        }
    } str;
    
    int main()
    {
    	int t;
    	string a;
    	cin>>t;
    	int k=1;
    	while(t--)
    	{
    		cin>>a;
    		str.init();
    		int len=a.size();
    		for(int i=0;i<len;i++)
    		{
    			str.add(a[i]);
    		}
    		cout<<"Case #"<<k++<<": ";
    		cout<<str.p-2<<endl;
    	}
    	return 0;
     } 
    
  • 相关阅读:
    android AndroidManifest.xml package名
    java 空字条串空判断 效率
    ant
    android post 提交数据
    BI 商务智能软件 数据分析
    swfupdate flash上传工具
    log4j 使用方法
    java vc vb 项目结构
    时间单位
    iphone命令行编译xcodebuild
  • 原文地址:https://www.cnblogs.com/tianming1/p/11609871.html
Copyright © 2020-2023  润新知