zoukankan      html  css  js  c++  java
  • hdu 4301 Divide Chocolate 夜

    给一个2*n 的chocolate 分成一定的块数 问有多少种情况

    DP 递推

    link[][]表示 到第 i 排 第i排相连 分成 j 块有多少种情况

    nolink[][]表示 到第 i 排 第i排不相连 分成j块有多少种情况

    代码:

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<queue>
    #include<cmath>
    #include<stack>
    #include<algorithm>
    
    using namespace std;
    
    const int N=1001;
    const int MOD=100000007;
    
    int link[N][N*2];
    int nolink[N][N*2];
    void begin()
    {
        link[1][2]=0;
        nolink[1][2]=1;
        for(int j=3;j<N*2-1;++j)//一些边界处理
        {
            link[1][j]=0;
            nolink[1][j]=0;
        }
        for(int i=1;i<N;++i)//一些边界处理
        {
            nolink[i][2*N-1]=0;
            link[i][0]=0;
            nolink[i][0]=0;
            link[i][1]=1;
            nolink[i][1]=0;
        }
        for(int i=2;i<N;++i)
        {
            for(int j=2;j<2*N-1;++j)
            {
                link[i][j]=(link[i-1][j]+link[i-1][j-1]+nolink[i-1][j-1]+nolink[i-1][j]*2)%MOD;
                nolink[i][j]=(link[i-1][j-1]*2+link[i-1][j-2]+nolink[i-1][j]+nolink[i-1][j-1]*2+nolink[i-1][j-2])%MOD;
            }
        }
    }
    int main()
    {
       int T;
       scanf("%d",&T);
       begin();
       while(T--)
       {
           int x,y;
           scanf("%d %d",&x,&y);
           printf("%d\n",(link[x][y]+nolink[x][y])%MOD);
       }
       return 0;
    }
    

      

  • 相关阅读:
    P1280 尼克的任务
    P2286 [HNOI2004]宠物收养场
    筛法求素数
    拓扑排序
    观光旅游
    [USACO09OCT]热浪Heat Wave
    Java环境变量配置
    git 常用命令
    mysql-5.7安装、配置
    maven-java包管理工具-01
  • 原文地址:https://www.cnblogs.com/liulangye/p/2602300.html
Copyright © 2011-2022 走看看