初涉字尾陣列

2021-09-07 13:51:15 字數 1516 閱讀 9019

以poj 1743為例。模板中的基數排序基於前向星。

詳細證明過程詳見 演算法合集之《字尾陣列——處理字串的有力工具》。非常不錯的一篇**。

#include #include #include #include #include #include #include #include #include #include #include #pragma comment(linker, "/stack:1024000000");

#define eps (1e-6)

#define ll long long

#define ull unsigned long long

#define _ll __int64

#define inf 0x3f3f3f3f

#define mod 1000000007

using namespace std;

const int maxn = 20510;

int s[maxn];

int rank[2*maxn],sa[2*maxn],tr[2*maxn],high[maxn];

struct n

edge[2*maxn];

int tail[maxn],top;

inline void link(int u,int v)

void get_sa(int *s,int n)

for(k = 1;k <= n; k <<= 1)

top = n+1;

for(i = 1;i <= n; ++i)

link(rank[sa[i]],sa[i]);

site = 1;

for(i = 1;i <= n; ++i)

for(tr[sa[1]] = 1,i = 2,ans = 1;i <= n; ++i)

for(i = 1;i <= n; ++i)

rank[i] = tr[i];

if(ans >= n)

break;

}for(i = 1,k = 1;i <= n; ++i)

j = sa[rank[i]-1];

while(i+k <= n && j+k <= n && s[i+k] == s[j+k])

k++;

high[rank[i]] = k;

}//// for(i = 1;i <= n; ++i)

// printf("i = %2d sa = %2d rank = %2d high = %2d\n",i,sa[i],rank[i],high[i]);

//以上為rank。sa,high的構造過程

}bool check(int mid,int n)

else

l = sa[i],r = sa[i];

}return false;

}int main()

printf("%d\n",anw+1 < 5 ? 0 : anw+1);

}return 0;

}

初涉彙編《三》

在彙編 二 中我的說的問題,在這就不做回答了,因為乙個暫存器的來儲存資料肯定不夠用,因此,這些暫存器就可以提供空間。好了,這個彙編學習畢竟是我對彙編的個人的學習問題。現在我來說說彙編中後面的幾個標誌暫存器。標誌暫存器總共有9個,分別是cf,pf,af,zf,sf,tf,if,df,of 詳細解答,看...

React 初涉總結

來新公司開始用 react 已經兩個多月了,當然之前我對 react 也不是一無所知的,對 react 的基礎語法 jsx virtual dom 都是有一定的了解。之前用過 angular vue,對元件化開發都掌握的很熟練了,但 react 與 angular vue 還是有較大差異的,在使用 ...

axios使用初涉

看vue的時候,vue2.0推薦使用axios做http請求,今天就學一下axios基本使用。安裝 axios npm install axios 目前接觸到最多的就是 npm映象 安裝 映象定製命令cnpm npm install g cnpm registry cnpm install 模組名稱...