1732 51nod婚姻介紹所
基準時間限制:1 秒 空間限制:131072 kb 分值: 40
難度:4級演算法題
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次查詢。output下面q行有兩個整數ai, bi。代表查詢特質為ai與bi的使用者的匹配度。
1 <= n <= 1000
1 <= q <= 10^6
輸入資料全部合法。
每一行輸出乙個使用者匹配度整數。input示例
12output示例loveornolove
53 7
0 09 1
3 19 5
0123wizmann00
(題目提供者)
/*最初的想法:詢問離線
*trie樹上乙個乙個掛新增字串,最後求lca
*感覺可做的樣子,但是可能會被卡常數
*正解:把字串翻過來,求最長公共字尾,詳見**
*/#include
#define maxn 1005
int dp[maxn][maxn];
int main(int argc,char *argv)
scanf("%d",&m);
while(m--)
printf("%d\n",dp[u+1][v+1]);
}return 0;}/*
花了我60點頭盾的ac** 不明白我的為什麼為t兩個點
#include
using namespace std;
const int maxn = 1005;
char str[maxn];
int dp[maxn][maxn];
int n;
int main()
else}}
int q;
scanf("%d", &q);
while(q--)
printf("%d\n", dp[a][b]);
}return 0;
}*/
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...
1732 51nod婚姻介紹所 字尾陣列
51nod除了在做oj之外,還開展了很多副業。婚姻介紹所就是其中之一。對於乙個客戶,我們可以使用乙個字串來描述該客戶的特質。假設現在我們有兩個客戶a和b。a的特質字串為 abcdefg b的特質字串為 abcxyz 則a和b的匹配度f a,b 為a和b的最長公共字首的長度,即len abc 3 由於...