bzoj千题计划183:bzoj1197: [HNOI2006]花仙子的魔法

http://www.lydsy.com/JudgeOnline/problem.php?id=1197

题意转化:在n维空间中放m个n维球,问最多将空间分成几部分

f[i][j] 表示在i维空间中放j个i维球

假设现在是放第j个,它首先包含有j-1个情况,即f[i][j-1]

再加上第j个与前j-1个相交产生的,两个i维相交是i-1维,即f[i-1][j-1]

所以f[i][j]=f[i-1][j-1]+f[i][j-1]

#include<cstdio>

using namespace std;

long long f[16][101];

int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    for(int i=1;i<=m;++i) f[1][i]=i<<1;
    for(int i=2;i<=n;++i)
    {
        f[i][1]=2;
        for(int j=2;j<=m;++j)
            f[i][j]=f[i-1][j-1]+f[i][j-1];
    }
    printf("%lld",f[n][m]);
}

1197: [HNOI2006]花仙子的魔法

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 1343  Solved: 747
[Submit][Status][Discuss]

Description

Input

包含两个整数,并用一个空格隔开,第一个整数表示实施魔法的次数m,第二个整数表示空间的维数n。其中,1≤m≤100,1≤n≤15。

Output

仅包含一个整数,表示花仙子在n维空间中实施了m次魔法后,最多能得到多少种不同的花。

Sample Input

3 1
原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/8182045.html