L3 2 至多刪三個字元

2021-10-25 00:14:00 字數 981 閱讀 2204

主要思路:dp[i][j]表示在前i個字元中刪除j個字元是字串種類數,則dp[i][j]分為兩種情況刪除第i個字元,不刪除第i個字元:dp[i - 1][j],刪除第i個字元:dp[i - 1][j - 1],所以dp[i][j

= dp[i - 1][j] + dp[i - 1][j - 1],然後再考慮重複情況,以樣例舉例ababcc刪除第1,2個元素ab和刪除第2,3個元素ba剩餘元素都為abcc,再舉乙個例子abcade,這時刪除abc和刪除bca剩餘元素都為ade,所以我們應該從k = i - 1個元素開始查詢s[k] == s[i]的元素,同時k>=1並且j >= (i - k),因為最多刪除j個元素,所以此時dp[i][j] = dp[i][j] - dp[k - 1][j - (i - k)]

ac**

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n =

1000010

;long

long f[n][4

];char s[n]

;int

main

(void)}

}}long

long sum =0;

for(

int i =

0; i <=

3; i++

) sum +

= f[len]

[i];

cout << sum << endl;

return0;

}

至多刪三個字元

l3 020 至多刪三個字元 30 分 給定乙個全部由小寫英文本母組成的字串,允許你至多刪掉其中 3 個字元,結果可能有多少種不同的字串?輸入在一行中給出全部由小寫英文本母組成的 長度在區間 4,10 6 內的字串。在一行中輸出至多刪掉其中 3 個字元後不同字串的個數。ababcc25刪掉 0 個字...

L3 020 至多刪三個字元 (30 分)

l3 020 至多刪三個字元 30 分 給定乙個全部由小寫英文本母組成的字串,允許你至多刪掉其中 3 個字元,結果可能有多少種不同的字串?輸入在一行中給出全部由小寫英文本母組成的 長度在區間 4,10 6 內的字串。在一行中輸出至多刪掉其中 3 個字元後不同字串的個數。ababcc25 刪掉 0 個...

2018CCCC L3 2 至多刪三個字元(DP)

l3 2 至多刪三個字元 30 分 給定乙個全部由小寫英文本母組成的字串,允許你至多刪掉其中 3 個字元,結果可能有多少種不同的字串?輸入在一行中給出全部由小寫英文本母組成的 長度在區間 4,10 6 內的字串。在一行中輸出至多刪掉其中 3 個字元後不同字串的個數。ababcc25 刪掉 0 個字元...