hdu1085 Holding Bin-Laden Captive!(母函数)

简单的母函数应用。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<cctype>
#include<sstream>
using namespace std;
#define pii pair<int,int>
#define LL long long int
const double eps=1e-10;
const int INF=1000000000;
const int maxn=8000+10;
int c1[maxn],n1,n2,n5;
int main()
{
    //freopen("in1.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    while(~scanf("%d%d%d",&n1,&n2,&n5))
    {
        if(n1==0&&n2==0&&n5==0) break;
        memset(c1,0,sizeof(c1));

        for(int i=0; i<=n1; i++)//第一个括号
        {
            c1[i]=1;
        }
        //第二个括号
        for(int j=0; j<=n1; j++)
        {
            for(int k=0; k<=2*n2; k+=2)
            {
                c1[k+j]=1;
                //cout<<k+j<<endl;
            }
        }
        //第三个括号
        for(int j=0;j<=n1+2*n2;j++)
        {
            for(int k=0;k<=5*n5;k+=5)
            {
                if(c1[j])
                {
                    c1[j+k]=1;
                }
            }
        }
        for(int i=0;; i++)
        {
            if(c1[i]==0)
            {
                printf("%d\n",i);
                break;
            }
        }
    }
    return 0;
}
    
时间: 2024-10-11 05:17:18

hdu1085 Holding Bin-Laden Captive!(母函数)的相关文章

HDU1085 Holding Bin-Laden Captive! 【母函数】

Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 14543    Accepted Submission(s): 6514 Problem Description We all know that Bin-Laden is a notorious terrorist, and he

hdu 1085 Holding Bin-Laden Captive!(母函数)

http://acm.hdu.edu.cn/showproblem.php?pid=1085 题意:1元,2元,5元的硬币分别有num[1],num[2],num[3]个.问用这些硬币不能组合成的最小钱数. 继续母函数. 有两个注意的地方: 对c2[]初始化的同时也要对c1[]初始化. 最后枚举到sum+1,因为存在[1,sum]都可以凑成的可能,这时输出sum+1. #include <stdio.h> #include <iostream> #include <map&g

hdu 1085 Holding Bin-Laden Captive! 母函数的基本运用,,还是不难的

Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16063    Accepted Submission(s): 7206 Problem Description We all know that Bin-Laden is a notorious terrorist, and he

HDU 1085 Holding Bin-Laden Captive!(母函数,或者找规律)

Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17653    Accepted Submission(s): 7902 Problem Description We all know that Bin-Laden is a notorious terrorist, and he h

HDU 1085 Holding Bin-Laden Captive!(母函数或背包DP)

Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23245    Accepted Submission(s): 10350 Problem Description We all know that Bin-Laden is a notorious terrorist, and he

HDU ACM 1085 Holding Bin-Laden Captive! 母函数?

分析:这题可以用母函数做,但可以找到简单的规律. 1.若1的个数为0,则输出1: 2.若1的个数不为0,则从1到n1+2*n2的数都能拼成:接着,只需考虑5的个数,若n1+2*n2能到4以上,则在所有5的组合中,中间4个间隔可以由n1+2*n2 填充,这时总和为S,则1到S之间的数都可以组成: 3.若n1+2*n2不能达到4,则开始达到5之前就断开了不能到5,就不用再去组合5的个数了. #include<iostream> using namespace std; int main() { i

hdu1085 Holding Bin-Laden Captive!

题蛮水的,细致考虑一下即可. 我写的代码既不是针对本题最优的也不是通用性最好的,仅仅是自己的方法. acm.hdu.edu.cn/showproblem.php?pid=1085 1 #include <cstdio> 2 #include <cstring> 3 4 using namespace std; 5 6 int a, b, c; 7 8 int getAns(){ 9 if(!a) return 1; 10 int high = 2 * b + a; 11 int l

使用母函数方法解答几个问题

由于在货币组合的题目中使用了母函数的方法,就顺便搜索一些资料和练习,加深自己的理解. 杭电ACM课件中简要介绍了母函数的方法,并给出了几道相关的题目. 1. HDU1398 Square Coins 使用指定的货币来组合一个给定的目标值,问一共有多少种可能.这道题和我们以前的货币组合题目大同小异,代码如下: 1 #include <stdio.h> 2 3 #define MAXITEMS 2048 4 5 int v[17] = {0}; 6 int c1[MAXITEMS]; 7 int

母函数专题

1.Hdu 2082 找单词 题意:单词A-Z具有1-26的价值,现有字母A-Z的个数num[i],求问在不超过价值为五十的情况下,有多少种字母的组合数. 思路:用指数代表价值,价值又为数组的下标:用系数代表组成该价值的方案数,方案数为数组中存的值. 1 #include<iostream> 2 #include<memory.h> 3 using namespace std; 4 int re[55]; 5 int p1[55]; 6 int p2[55]; 7 int xx[2