1732 51nod婚姻介紹所 字尾陣列

2021-09-19 17:44:20 字數 2125 閱讀 1323

51nod除了在做oj之外,還開展了很多副業。婚姻介紹所就是其中之一。

對於乙個客戶,我們可以使用乙個字串來描述該客戶的特質。

假設現在我們有兩個客戶a和b。

a的特質字串為:abcdefg

b的特質字串為:abcxyz

則a和b的匹配度f(a, b)為a和b的最長公共字首的長度,即len(『abc』) = 3

由於最近51nod經費緊張,所以夾克大老爺設計了一種壓縮演算法以節約記憶體。

所有使用者的特質字串都被儲存在了乙個長為n的字串s中。(n <= 1000)使用者的特質使用乙個整數p表示,表示該使用者的特質字串為s[p…n - 1]。

現給定字串s,與q次查詢(ai, bi分別為合法的使用者特質整數)。請輸出q次查詢分別對應的客戶匹配度。

現給定字串長度n,與字串s。接下來是整數q,代表接下來有q次查詢。

下面q行有兩個整數ai, bi。代表查詢特質為ai與bi的使用者的匹配度。

1 <= n <= 1000

1 <= q <= 10^6

輸入資料全部合法。

每一行輸出乙個使用者匹配度整數。

題意:求給定x位置的字尾與y位置的字尾的最長公共字首

思路:字尾x和字尾y的最長公共字首

min(height[rak[x]+1], height[rak[x] + 2]…height[rak[y]])

使用rmq預處理出height陣列,然後o(1)時間複雜度查詢最長公共字首

#include

using

namespace std;

const

int maxn =

1e6+5;

char s[maxn]

;struct node a[maxn]

, b[maxn]

;int n, m, p;

int sa[maxn]

, rak[maxn]

, tx[maxn]

;int lg[maxn]

;void

rsort()

for(

int i =

1; i <= n; i++

)for

(int i =

1; i <= m; i++

)for

(int i =

1; i <= n; i++

)for

(int i =

1; i <= m; i++

)for

(int i =

1; i <= n; i++

)for

(int i =

1; i <= m; i++

)for

(int i = n; i >=

1; i--)}

void

solve()

else

}for

(int i =

1; i <= n; i++

) m = p;

}void

ssort()

solve()

;for

(int j =

1; j <= n; j <<=1)

solve()

;if(p == n)}}

int height[maxn]

;inline

void

get_height()

}int dp[maxn][20

];void

rmq(

)for

(int j =

1; j <= lg[n]

; j++)}

}inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return k*f;

}int

main()

else

l++;int k = lg[r - l +1]

;printf

("%d\n"

,min

(dp[l]

[k], dp[r -(1

<< k)+1

][k]))

;}}return0;

}

51nod 1732 51nod婚姻介紹所

51nod除了在做oj之外,還開展了很多副業。婚姻介紹所就是其中之一。對於乙個客戶,我們可以使用乙個字串來描述該客戶的特質。假設現在我們有兩個客戶a和b。a的特質字串為 abcdefg b的特質字串為 abcxyz 則a和b的匹配度f a,b 為a和b的最長公共字首的長度,即len abc 3 由於...

51Nod 1732 51nod婚姻介紹所

1732 51nod婚姻介紹所 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 51nod除了在做oj之外,還開展了很多副業。婚姻介紹所就是其中之一。對於乙個客戶,我們可以使用乙個字串來描述該客戶的特質。假設現在我們有兩個客戶a和b。a的特質字串為 abcdefg...

51nod 1732 51nod婚姻介紹所

1732 51nod婚姻介紹所 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 51nod除了在做oj之外,還開展了很多副業。婚姻介紹所就是其中之一。對於乙個客戶,我們可以使用乙個字串來描述該客戶的特質。假設現在我們有兩個客戶a和b。a的特質字串為 abcdefg...