HDU1028 Ignatius and the Princess III【母函数】【完全背包】

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1028

题目大意:

给定正整数N,定义N = a[1] + a[2] + a[3] + … + a[m],a[i] > 0,1 <= m <= N。

对于给定的正整数N,问:能够找出多少种这样的等式?

思路:

对于N = 4,

4 = 4;

4 = 3 + 1;

4 = 2 + 2;

4 = 2 + 1 + 1;

4 = 1 + 1 + 1 + 1。

共有5种。N=4时,结果就是5。其实就是整数分解问题,可写出母函数

g(x) = (1+x+x^2+x^3+…)*(1+x^2+x^4+…)*(1+x^3+…)*(1+x^4+…)

直接套用母函数模板http://blog.csdn.net/lianai911/article/details/45567595

出解即可。

其实,用完全背包也可以做,附上代码。

AC代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;

int c1[130],c2[130];

int main()
{
    int N;
    while(cin >> N)
    {
        for(int i = 0; i <= N; ++i)
        {
            c1[i] = 1;
            c2[i] = 0;
        }

        for(int i = 2; i <= N; ++i)
        {
            for(int j = 0; j <= N; ++j)
                for(int k = 0; j+k <= N; k += i)
                    c2[j+k] += c1[j];
            for(int j = 0; j <= N; ++j)
            {
                c1[j] = c2[j];
                c2[j] = 0;
            }
        }
        cout << c1[N] << endl;
    }

    return 0;
}
#include<stdio.h>
#include<string.h>

int dp[200];

int main()
{
    dp[0] = 1;
    for(int i = 1; i <= 120; i++)
    {
        for(int j = i; j <= 120; j++)
        {
            dp[j] += dp[j-i];
        }
    }
    int n;
    while(~scanf("%d",&n))
    {
        printf("%d\n",dp[n]);
    }
    return 0;
}
时间: 2024-08-09 06:16:35

HDU1028 Ignatius and the Princess III【母函数】【完全背包】的相关文章

HDU1028 Ignatius and the Princess III 母函数

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25867    Accepted Submission(s): 17879 Problem Description "Well, it seems the first problem is too easy. I will let

HDU1028 Ignatius and the Princess III 【母函数模板题】

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12521    Accepted Submission(s): 8838 Problem Description "Well, it seems the first problem is too easy. I will let

HDU 1028 Ignatius and the Princess III(母函数)

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15794    Accepted Submission(s): 11138 Description "Well, it seems the first problem is too easy. I will let you kno

Ignatius and the Princess III(母函数)

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16028    Accepted Submission(s): 11302 Problem Description "Well, it seems the first problem is too easy. I will let

hdu 1028 Sample Ignatius and the Princess III (母函数)

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25929    Accepted Submission(s): 17918 Problem Description "Well, it seems the first problem is too easy. I will let

【母函数】hdu1028 Ignatius and the Princess III

大意是给你1个整数n,问你能拆成多少种正整数组合.比如4有5种: 4 = 4;  4 = 3 + 1;  4 = 2 + 2;  4 = 2 + 1 + 1;  4 = 1 + 1 + 1 + 1; 然后就是母函数模板题--小于n的正整数每种都有无限多个可以取用. (1+x+x^2+...)(1+x^2+x^4+...)...(1+x^n+...) 答案就是x^n的系数. #include<cstdio> #include<cstring> using namespace std;

ACM学习历程—HDU1028 Ignatius and the Princess III(递推 || 母函数)

Description "Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says. "The second problem is, given an positive integer N, we define an equation like this:   N=a[1]+a[2]+a[3]+...+a[m];   a

HDU Ignatius and the Princess III (母函数)

Problem Description "Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says. "The second problem is, given an positive integer N, we define an equation like this:  N=a[1]+a[2]+a[3]+...+a[

hdu1028 Ignatius and the Princess III

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1028 递归能跑... 但是我交了直接超时了,然后我就把数据跑出来了再交的,等的时间有点长(怪不得超时). 过的有点猥琐,看别人代码用母函数过的. 1 #include<iostream> 2 #include<string.h> 3 #include<math.h> 4 #include<stdlib.h> 5 #include<stdio.h> 6