zoukankan      html  css  js  c++  java
  • 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;
     } 
    
  • 相关阅读:
    串口基本知识
    20180826
    20180819
    自动化测试
    说话有重点 测试思维
    学习C语言,在软件测试中如何用?
    PC能替代服务器吗?
    服务器与普通电脑的区别?
    k8s 回滚应用
    k8s Service
  • 原文地址:https://www.cnblogs.com/tianming1/p/11609871.html
Copyright © 2011-2022 走看看