【BZOJ 1566】 1566: [NOI2009]管道取珠 (DP)
2017-04-01 09:58
471 查看
1566: [NOI2009]管道取珠
Time Limit: 20 Sec Memory Limit: 650 MBSubmit: 1659 Solved: 971
Description
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 #include<algorithm> 6 using namespace std; 7 #define Mod 1024523 8 #define Maxn 510 9 10 char s[Maxn]; 11 int a[Maxn],b[Maxn],f[Maxn][Maxn][Maxn]; 12 13 int main() 14 { 15 int n,m; 16 scanf("%d%d",&n,&m); 17 scanf("%s",s+1); 18 for(int i=1;i<=n;i++) a[i]=s[i]-'A';a[n+1]=10; 19 scanf("%s",s+1); 20 for(int i=1;i<=m;i++) b[i]=s[i]-'A';b[m+1]=100; 21 memset(f,0,sizeof(f)); 22 f [m] =1; 23 for(int i=n;i>=0;i--) 24 for(int j=m;j>=0;j--) 25 for(int k=n;k>=0;k--) 26 { 27 int l=i+j-k; 28 if(l<0||l>m||(i==n&&j==m)) continue; 29 // f[i][j][k]=0; 30 if(a[i+1]==a[k+1]) f[i][j][k]=(f[i][j][k]+f[i+1][j][k+1])%Mod; 31 if(a[i+1]==b[l+1]) f[i][j][k]=(f[i][j][k]+f[i+1][j][k])%Mod; 32 if(b[j+1]==a[k+1]) f[i][j][k]=(f[i][j][k]+f[i][j+1][k+1])%Mod; 33 if(b[j+1]==b[l+1]) f[i][j][k]=(f[i][j][k]+f[i][j+1][k])%Mod; 34 } 35 printf("%d\n",f[0][0][0]); 36 return 0; 37 }
View Code
2017-04-01 09:57:53
相关文章推荐
- bzoj 1566: [NOI2009]管道取珠【dp】
- BZOJ1566 [NOI2009]管道取珠 dp
- bzoj 1566 NOI 2009 管道取珠 DP 解题报告
- [BZOJ 1566][NOI2009]管道取珠(DP)
- [BZOJ1566][NOI2009]管道取珠(DP)
- BZOJ 1566: [NOI2009]管道取珠 另类DP
- [平方的拆分 DP] BZOJ 1566 [NOI2009]管道取珠
- 【bzoj1566】【NOI2009】【管道取珠】【dp】
- bzoj 1566: [NOI2009]管道取珠 (DP)
- BZOJ1566 [NOI2009]管道取珠 【dp】
- bzoj1566 [NOI2009]管道取珠
- bzoj1566 [NOI2009]管道取珠
- bzoj1566【Noi2009】管道取珠
- BZOJ 1566: [NOI2009]管道取珠
- [bzoj1566][NOI2009]管道取珠
- BZOJ1566: [NOI2009]管道取珠
- bzoj 1566: [NOI2009]管道取珠 动态规划
- bzoj1566 [NOI2009]管道取珠
- bzoj 1566: [NOI2009]管道取珠
- 【BZOJ 1566】: 【NOI2009】管道取珠 另类DP