andre_joy

导航

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;
}

posted on 2012-07-20 09:17  andre_joy  阅读(178)  评论(0编辑  收藏  举报