hdu 4301
地址:http://acm.hdu.edu.cn/showproblem.php?pid=4301
题意:分巧克力,注意每块巧克力都不一样。
mark:dp,三维的。
代码:
#include <stdio.h> int dp[1010][2010][2]; int main() { int t,i,j; dp[1][1][0] = dp[1][2][1] = dp[2][1][0] = dp[2][3][0] = dp[2][4][1] = 1; dp[2][2][0] = dp[2][3][1] = 3; dp[2][2][1] = 3; for(i = 3; i <= 1000; i++) { dp[i][1][0] = 1; dp[i][1][1] = 0; for(j = 2; j <= 2*i; j++) { dp[i][j][0] = (dp[i-1][j-1][0] + dp[i-1][j-1][1] + dp[i-1][j][0] + 2*dp[i-1][j][1])%100000007; dp[i][j][1] = (dp[i-1][j-2][0] + dp[i-1][j-2][1] + 2*(dp[i-1][j-1][0] + dp[i-1][j-1][1]) + dp[i-1][j][1])%100000007; } } scanf("%d", &t); while(t-- && scanf("%d%d", &i, &j)) printf("%d\n", (dp[i][j][0]+dp[i][j][1])%100000007); return 0; }