51nod 1732 51nod婚姻介紹所

2021-07-11 15:26:06 字數 1486 閱讀 2890

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

輸入資料全部合法。

output

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

12

loveornolove

53 7

0 09 1

3 19 5

output示例

0123

00

wizmann

(題目提供者)

思路:直接把字串倒轉過來,然後dp[i][j]表示第i個和第j個的最長公共字尾,最後查詢直接輸出dp[n-u][n-v]就好了,o(n^2)預處理,o(1)查詢。

#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int inf =0x3f3f3f3f;

const double pi = acos(-1.0);

const int n = 1e3 + 10;

int dp[n][n];

char s[n],x[n];

int main()

x[n] = '\0';

memset(dp, 0, sizeof(dp));

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

for(int j = 1; j<=n; j++)

else dp[i][j] =0;

}int u, v;

scanf("%d", &m);

while(m--)

return 0;

}

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...

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

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