UVa11107 字尾陣列

2021-06-18 21:00:57 字數 782 閱讀 1118

這題由於這週六考大物,整整拖了一周時間,一開始寫的我估計也沒什麼大問題,細節比較多:

1.字元陣列直接寫成int陣列,並且最後一位s[n]=0,來維護sa陣列,height陣列(記錄lcs),rank陣列;

2.二分的技巧,也看到了很多;

3.看來劉汝佳的書寫的也不是很完美,對於字尾陣列雖然給了標程,但是具體怎麼使用,要注意哪些細節並沒有給出提示,好在還有一篇國家隊**可以看,**裡講的就比較詳細。

恩!第一道字尾陣列。

#include #include #include #include using namespace std;

#define n 200

#define maxn 200000

//correct

int s[maxn];

int sa[maxn], source[maxn], flag[n];

int rank[maxn],height[maxn];

int t[maxn], t2[maxn], c[maxn];

int n, js;

void build_sa(int n,int m)

}void getheight()

cnt++;}}

else

cnt++;}}

else

return false;

}void del()

else q=mid-1;

}print(ans);

}return 0;

}

uva11107 字尾陣列

給定n個字串,求長度最大的字串 不一定是原字元 在超過一半的字串中連續出現 1.將n個字串通過特殊字元連線起來,合成乙個文字串。題目轉化為尋找匹配點的對應字串個數超過n 2的最長字串 2.二分答案求出最大值。二分最大值的基礎 如果對於x成立,則對於不大於x的所有值都成立,則可以二分最大值 3.判斷是...

UVA 11107 生命的形式(字尾陣列 LCP)

把所有輸入的字串拼起來,二分答案,每次判斷是否有乙個長度為p的串在超過一半的串中連續出現,判斷方法是掃瞄height陣列,因為height陣列中,相同串長度都聚集在一起。includeusing namespace std const int maxn 100005 char s maxn int ...

字尾樹 字尾陣列

在字串處理當中,字尾樹和字尾陣列都是非常有力的工具,其中字尾樹大家了解得比較多,關於字尾陣列則很少見於國內的資料。其實字尾陣列是字尾樹的乙個非 常精巧的替代品,它比字尾樹容易程式設計實現,能夠實現字尾樹的很多功能而時間複雜度也不太遜色,並且,它比字尾樹所占用的空間小很多。可以說,在資訊學競賽 中字尾...