记录编号 271387 评测结果 AAAAAAAAAA
题目名称 [NOIP 2015]子串 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 0.813 s
提交时间 2016-06-15 21:34:13 内存使用 1.76 MiB
显示代码纯文本
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define mod 1000000007
  4. long long f[2][1010][210]={0};
  5. int a=0,n,m,i,j,k,l;
  6. char A[1010]={0},B[210]={0};
  7. int _521()
  8. {
  9. freopen("2015substring.in","r",stdin);
  10. freopen("2015substring.out","w",stdout);
  11. scanf("%d%d%d",&n,&m,&k);
  12. scanf("%s%s",A+1,B+1);
  13. for(i=0;i<=n;i++) f[0][i][0]=1;
  14. for(l=1;l<=k;l++)
  15. {
  16. a^=1;
  17. for(i=0;i<=n;i++) f[a][i][l-1]=0;
  18. for(i=l;i<=m;i++)
  19. {
  20. for(j=i;j<=n;j++)
  21. {
  22. if(A[j]==B[i])
  23. {
  24. f[a][j][i]=f[a^1][j-1][i-1]+f[a][j-1][i-1]+f[a][j-1][i];
  25. f[a][j][i]%=mod;
  26. if(j>=2) f[a][j][i]=(mod+f[a][j][i]-f[a][j-2][i-1])%mod;
  27. }
  28. else f[a][j][i]=f[a][j-1][i];
  29. }
  30. }
  31. }
  32. printf("%lld\n",f[a][n][m]);
  33. return 0;
  34. }
  35. int _520=_521();
  36. int main(){;}