[洛谷 P2679]子串
转载请注明出处:http://danihao123.is-programmer.com/
DP神题……
第一眼都能看出来是DP,然后大约构思就出来了,但细节很复杂啊……
看完第一眼后大家大约都能想出来[tex]d[i][j][k][/tex]这样的状态,但是注意[tex]A[i]=B[j][/tex](字符数组细节此处未予考虑)的情况和整体情况要独立对待,否则这题只能233
然后下面就不难想了。但是注意直接开数组会233,要开滚动数组防MLE。
代码:
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn=1001,maxm=201,maxk=201; const int MOD=1e9+7; int d[2][maxm][maxk][2]; char A[maxn]; char B[maxm]; int main(){ register int i,j,p,now,pre; int n,m,k; scanf("%d%d%d",&n,&m,&k); scanf("%s%s",A,B); d[0][0][0][1]=1; for(i=1;i<=n;i++){ now=i%2; pre=1-now; d[now][0][0][1]=1; for(j=1;j<=m;j++){ if(A[i-1]==B[j-1]) for(p=1;p<=min(k,j);p++){ d[now][j][p][0]=(d[pre][j-1][p][0]+d[pre][j-1][p-1][1])%MOD; d[now][j][p][1]=(d[pre][j][p][1]+d[now][j][p][0])%MOD; } else for(p=1;p<=min(k,j);p++){ d[now][j][p][0]=0; d[now][j][p][1]=d[pre][j][p][1]; } } } printf("%d\n",d[n%2][m][k][1]); return 0; }
Dec 20, 2022 10:32:59 PM
You may be asking how to delete Instagram messages because you want to clear up your inbox of spam messages. Perhaps your need to erase texts is a reflex reaction to an emotionally charged scenario. Delete Instagram Chat There are both good and negative reasons to delete your conversations and bear in mind that this is a final decision, so make it carefully. Here’s all you need to know about erasing or deleting Instagram direct messages.
Jul 03, 2023 11:23:56 AM
Initiative of professional writers who have come together for dedicated news coverage of latest happenings around the country (India). Our team comprises of professional writers & citizen journalists with diverse range of interest in Journalism who are passionate about cmbihar.in publishing the Education Updates with transparency in general public interest