[dp] hdu 4472 Count

来源:互联网 发布:nginx 判断请求参数 编辑:程序博客网 时间:2024/05/22 06:28

题意:

给出n个节点,满足同层节点的子节点个数相同的树有都少种不同的形态。

思路:

dp[i][j] 代表i个节点,最后一层有j个节点的方法

因为要满足同层节点数相同,所以j层的下一层一定是j 的整数倍

所以就能得到后续的状态

代码:

#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"map"#define ll __int64#include"iostream"using namespace std;ll dp[1234][1234],sum[1234];ll mod=1000000007;int main(){    int cas=1;    memset(dp,0,sizeof(dp));    dp[1][1]=1;    for(int i=1;i<=1000;i++)    {        for(int j=1;j<=1000;j++)        {            for(int k=j;k<=1000;k+=j)            {                if(i+k>1000) break;                dp[i+k][k]=(dp[i+k][k]+dp[i][j])%mod;            }            sum[i]=(sum[i]+dp[i][j])%mod;        }    }    ll n;    while(scanf("%I64d",&n)!=-1)    {        printf("Case %d: %I64d\n",cas++,sum[n]);    }    return 0;}


0 0
原创粉丝点击