码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj1566

时间:2018-03-30 15:16:03      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:gpo   zoj   规划   define   namespace   \n   clu   print   char   

动态规划,挺经典的

两次取的序列一样,可以看成两个人分别玩一次,然后两个人得到的序列一样.

f [ i ][ j ][ k ]表示已经用了 i 个球,,第一个人在上方取了j个,第二个人在上方取了k个的答案.

#include<cstdio>
#define mo 1024523
using namespace std;
int n,m,f[2][505][505];
char s1[505],s2[505];

int main(){
    scanf("%d%d",&n,&m);
    scanf(" %s %s",s1+1,s2+1);
    f[0][0][0]=1;
    for(int i=0;i<m+n;i++){
        int t=i%2;
        for(int j=0;j<=n&&j<=i;j++)
           for(int k=0;k<=n&&j<=i;k++)
             if(f[t][j][k]){
                 if(s1[j+1]==s2[i-k+1]) (f[!t][j+1][k]+=f[t][j][k])%=mo;
                 if(s2[i-j+1]==s1[k+1]) (f[!t][j][k+1]+=f[t][j][k])%=mo;
                 if(s2[i-j+1]==s2[i-k+1]) (f[!t][j][k]+=f[t][j][k])%=mo;
                 if(s1[j+1]==s1[k+1]) (f[!t][j+1][k+1]+=f[t][j][k])%=mo;
                 f[t][j][k]=0;
             }
    }
    printf("%d\n",f[(n+m)%2][n][n]);
}

 

bzoj1566

标签:gpo   zoj   规划   define   namespace   \n   clu   print   char   

原文地址:https://www.cnblogs.com/MikuKnight/p/8676204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!