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
(題目提供者)
思路:直接把字串倒轉過來,然後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 由於...