标签:
辣鸡军训毁我青春!!!
因为在军训,导致很长时间都只能看书yy题目,而不能溜到机房鏼题
于是在猫大的帮助下我发现这道习题是数位dp
然后想起之前讲dp的时候一直在补作业所以没怎么写,然后就试了试
果然dp的代码比数据结构题短到不知道哪里去了,而且1A,爽啊
1 #include <cstdio> 2 int t=1,T,n,m; 3 long long dp[65][100][130]; 4 int main() 5 { 6 for(scanf("%d",&T);t<=T;t++) 7 { 8 scanf("%d%d",&n,&m); 9 printf("Case %d: ",t); 10 if((n&1)||(!m)) 11 { 12 printf("0\n"); 13 continue; 14 } 15 for(int i=1;i<=n;i++) 16 for(int j=0;j<m;j++) 17 for(int k=0;k<=2*n;k++) 18 dp[i][j][k]=0; 19 dp[1][1%m][1+n]=1; 20 for(int i=2;i<=n;i++) 21 for(int j=0;j<m;j++) 22 for(int k=0;k<=2*n;k++) 23 { 24 if(k>0) 25 dp[i][j*2%m][k-1]+=dp[i-1][j][k]; 26 if(k<2*n) 27 dp[i][(j*2+1)%m][k+1]+=dp[i-1][j][k]; 28 } 29 printf("%lld\n",dp[n][0][n]); 30 } 31 return 0; 32 }
良心样例,本来我没开longlong的,样例都已经炸int了就改掉了
标签:
原文地址:http://www.cnblogs.com/wanglichao/p/5798712.html