題意: 給乙個字串,求出按函式的方法得到的b,b的所有以pi為起點的字尾按字典序排序。得到pi的序列。
思路:找字尾陣列c(找到第i個後面與它相同字元的距離),可以證明b陣列與c陣列對應的字尾字典序是相反的。求c陣列的時候有些操作也在下面位址裡。
上面兩個的位址 : 大佬位址
找出每個字尾陣列後,排序就可以了,直接sort排序,比較會超時。所以用manber和myers發明的演算法,最後反著輸出。
o(nlogn) 挑戰程式設計競賽(第一版)378頁有講
我的**:
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#include
#define int long long
using
namespace std;
typedef pair<
int,
int> pii;
typedef
long
long ll;
const
int inf =
0x3f3f3f3f
;const
double eps =
1e-4
;const
int mod =
1e9+7;
const
int n =
100010
;int n,c[n]
,sa[n]
,tmp[n]
,ran[n]
,k;char s[n]
;bool
cmp(
int i,
int j)
void
get_sa()
for(k =
1;k <= n+
1;k <<=1)
}void
get_c()
else
} c[n]
= n+1;
}signed
main()
return0;
}
2020 牛客多校第一場
a b suffix array f infinite string comparision jzk開場提出了兩倍最大的長度,然後 dh 說直接比較a b和b a即可,由於是訓練賽,不想寫太長的 然後交了一發直接比較的 就過了 includeusing namespace std string s1...
2020牛客暑假多校 第一場 E,J
本題相當於比較 a b 與 b a 這裡簡要證明一下,以樣例的第三組資料為例子。a aba b abaa a b abaabaa b a abaaaba 很清楚地發現,a b b a,這樣怎麼推出a b呢,我們一步步看,首先a 0 b 0 a 1 b 1 a 2 b 2 說明a的所有元素與b的前三個...
牛客寒假多校第一場A
題目描述 在絕地求生 吃雞 遊戲裡,不同的槍枝有不同的威力,更是可以搭配不同的配件,以提公升槍枝的效能。每一把槍都有其威力及其可裝備配件種類。每乙個配件有其所屬種類,可以為槍枝提供威力的百分比加成。每一把槍只能裝備乙個同類配件。給你n把槍枝和m個配件,槍的威力為p,可裝備的配件數量為k,為k個不同型...