zoukankan      html  css  js  c++  java
  • hdu 1028 Ignatius and the Princess III(母函数)

    题意:

      N=a[1]+a[2]+a[3]+...+a[m];
      a[i]>0,1<=m<=N;

    例如:

      4 = 4;
      4 = 3 + 1;
      4 = 2 + 2;
      4 = 2 + 1 + 1;
      4 = 1 + 1 + 1 + 1;

    共有5种。

    给N,问共有几种构造方式。

    思路:

    一个数N分解的式子中1的个数可以是0,1,2,3,...,N。

    2的个数可以是0,1,2,...,N/2。

    ....

    母函数基础题,,

    看代码。

    当然也可以用DP(背包)

    母函数代码:

    int N,num;
    int a[200],b[200];
    
    int main(){
        while(cin>>N){
            memset(a,0,sizeof(a)); a[0]=1; memset(b,0,sizeof(b));
            for(int i=1;i<=N;++i){
                for(int j=0;j<=N;++j)
                    for(int k=0;k+j<=N;k+=i) b[j+k]+=a[j];
                for(int j=0;j<=N;++j){ a[j]=b[j]; b[j]=0; }
            }
            cout<<a[N]<<endl;
        }
    }
  • 相关阅读:
    堆排序
    伽马分布
    隔壁-贪心
    对刚—约瑟夫环
    站军姿-两圆并集
    单纯的线性筛素数
    3兔子
    2.圆桌游戏
    1.花
    历史
  • 原文地址:https://www.cnblogs.com/fish7/p/4265605.html
Copyright © 2011-2022 走看看