bzoj 1197: [HNOI2006]花仙子的魔法

地推

/**************************************************************
    Problem: 1197
    User: lxy8584099
    Language: C++
    Result: Accepted
    Time:0 ms
    Memory:824 kb
****************************************************************/
 
/*
    f i,j表示i维 j次施法得到的不同花
    先想一维的情况:
    显然k次作用后最多会产生2k种不同的花,
    二维呢?新增加一次施法次数便是多一个圆,
    圆和刚才已经 画好的圆相交,
    我们看新的圆的出现造成了多少种新花的出现,我
    们不必看分割出了多少个二维平面,
    而是看圆的二维流形:
    一条封闭的曲线被分割成了多少部分, 
    这时问题成了一维的情况,就可以递推了
    f i,j =f i,j-1 + f i-1,j-1
*/
#include<cstdio>
using namespace std;
long long f[2][100];
int n,m,k=0;
int main()
{
    scanf("%d%d",&m,&n);
    f[0][0]=1;
    for(int i=1;i<=m;i++) f[0][i]=(i<<1);
    for(int i=2;i<=n;i++)
    {
        f[k^1][0]=1;
        for(int j=1;j<=m;j++) f[k^1][j]=f[k^1][j-1]+f[k][j-1];
        k^=1;
    }
    printf("%lld\n",f[k][m]);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/lxy8584099/p/10359460.html