洛谷 P2679 子串

2022-04-06 23:19:27 字數 1140 閱讀 2413

f[i][j][p][0/1]表示b前j個字元由a的前i個字元分成p段,且a[i]選或不選的方案數.

(1)當前a[i-1]可以不選 f[i-1][j-1][p-1][0]

(2)當前a[i]與a[i-1]在同一段上 f[i-1][j-1][p][1]

(3)當前a[i]與a[i-1]不在同一段上 f[i-1][j-1][p-1][1]

(1)a[i-1]選 f[i-1][j][p][1]

(2)a[i-1]不選 f[i-1][j][p][0]

好了,這道題的思路就是這樣了,但是還有一點需要注意,如果直接寫上面的方程的話,會mle,然後又發現可以壓一維,然後就ac了.

//別忘了初始化.

還有最重要的一點:**第3行的三個人排名不分先後!!!!

先貼一下思路中的未經優化的**,便於理解:

1 #include2 #include3

4using

namespace

std;56

string

a,b;

7int n,m,w,f[1001][201][201][2];8

9int

main()

21else25}

26 printf("

%d",f[n][m][w][1] + f[n][m][w][0

]);27

return0;

28 }

mle+沒有處理細節

1 #include2 #include3

#define yyq_ljx_xhy 10000000074//

排名不分先後,都可以吊打本蒟蒻

5using

namespace

std;67

string

a,b;

8int n,m,w,f[2][201][201][2

],p;910

intmain()

22else26}

27 printf("

%d",(f[p^1][m][w][1] + f[p^1][m][w][0]) %yyq_ljx_xhy);

28return0;

29 }

//noip2015提高 day2 t2

洛谷 P2679子串

題目背景 無 題目描述 有兩個僅包含小寫英文本母的字串 a 和 b。現在要從字串 a 中取出 k 個互不重疊的非空子串,然後把這 k 個子串按照其在字串 a 中出現的順序依次連線起來得到一 個新的字串,請問有多少種方案可以使得這個新串與字串 b 相等?注意 子串取出 的位置不同也認為是不同的方案。輸...

題解 P2679 子串

傳送門 對於這道題,有好多大佬發了題解,狀態轉移方程也都一樣,但是那些大佬們都是只給個狀態轉移方程,以至於我這個蒟蒻很難搞懂什麼意思,所以發篇題解說下自己的理解 f i j k 0 qquad qquad qquad qquad qquad qquad qquad qquad qquad qquad...

洛谷P2679 NOIP2015 子串

無 有兩個僅包含小寫英文本母的字串 a 和 b。現在要從字串 a 中取出 k 個互不重疊的非空子串,然後把這 k 個子串按照其在字串 a 中出現的順序依次連線起來得到一 個新的字串,請問有多少種方案可以使得這個新串與字串 b 相等?注意 子串取出 的位置不同也認為是不同的方案。輸入格式 輸入檔名為 ...