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 MBSubmit: 1343 Solved: 747
[Submit][Status][Discuss]
Description
Input
包含两个整数,并用一个空格隔开,第一个整数表示实施魔法的次数m,第二个整数表示空间的维数n。其中,1≤m≤100,1≤n≤15。
Output
仅包含一个整数,表示花仙子在n维空间中实施了m次魔法后,最多能得到多少种不同的花。
Sample Input
3 1