zoukankan      html  css  js  c++  java
  • 【SPOJ 694】Distinct Substrings 不相同的子串的个数

    不会翻墙啊,没法评测啊,先存一下代码QAQ

    2016-06-16神犇Menci帮我测过AC了,谢谢神犇Menci QwQ

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    const int N = 1003;
    
    int t1[N], t2[N], c[N], rank[N], a[N], sa[N], h[N];
    void st(int *x, int *y, int *sa, int n, int m) {
    	int i;
    	for(i = 0; i < m; ++i) c[i] = 0;
    	for(i = 0; i < n; ++i) ++c[x[y[i]]];
    	for(i = 1; i < m; ++i) c[i] += c[i - 1];
    	for(i = n - 1; i >= 0; --i) sa[--c[x[y[i]]]] = y[i];
    }
    void mkhz(int *a, int *sa, int n, int m) {
    	int *t, *x = t1, *y = t2, i, j, p;
    	for(i = 0; i < n; ++i) x[i] = a[i], y[i] = i;
    	st(x, y, sa, n, m);
    	for(j = 1, p = 1; p < n; j <<= 1, m = p) {
    		p = 0;
    		for(i = n - j; i < n; ++i) y[p++] = i;
    		for(i = 0; i < n; ++i) if (sa[i] >= j) y[p++] = sa[i] - j;
    		st(x, y, sa, n, m);
    		for(t = x, x = y, y = t, p = 1, x[sa[0]] = 0, i = 1; i < n; ++i)
    			x[sa[i]] = y[sa[i]] == y[sa[i - 1]] && y[sa[i] + j] == y[sa[i - 1] + j] ? p - 1 : p++;
    	}
    }
    void mkh(int *r, int *sa, int *rank, int *h, int n) {
    	int i, j, k = 0;
    	for(i = 1; i <= n; ++i) rank[sa[i]] = i;
    	for(i = 1; i <= n; h[rank[i++]] = k)
    		for(k ? --k : 0, j = sa[rank[i] - 1]; r[i + k] == r[j + k]; ++k);
    }
    
    char s[N];
    int n;
    int main() {
    	int Q;
    	scanf("%d", &Q);
    	while (Q--) {
    		scanf("%s", s + 1);
    		n = strlen(s + 1);
    		for(int i = 1; i <= n; ++i) a[i] = s[i];
    		mkhz(a, sa, n + 1, 128);
    		mkh(a, sa, rank, h, n);
    		int ans = 0;
    		for(int i = 1; i <= n; ++i)
    			ans += n - sa[i] + 1 - h[i];
    		printf("%d
    ", ans);
    	}
    	return 0;
    }
    

    ~~~

  • 相关阅读:
    SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
    麦咖啡导致电脑不能上网
    SharePoint 2013 Central Admin 不能打开
    SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)
    SharePoint 2013 APP 开发示例 系列
    synthesize(合成) keyword in IOS
    Git Cmd
    简单的正则匹配
    Dropbox
    SQL Server Replication
  • 原文地址:https://www.cnblogs.com/abclzr/p/5419806.html
Copyright © 2011-2022 走看看