题意:

  有面值分别为1、2、5的硬币,分别有num_1、num_2、num_5个,问不能组成的最小面值是多少?(0<=每种硬币个数<=1000,组成的面值>0)

思路:

  母函数解决。只有3个括号要作乘法,分别代表面值1、2、5所能组成的情况。需要两个数组,所能组成的最大值为num_1+2*num_2+5*num_5。如果在这个范围内都能组成,那么最小不能组成的面值为num_1+2*num_2+5*num_5+1。若没有1分钱的硬币,那么不能组成的肯定是1了。

  数组的用法:ans[]保存第一个括号→sup保存前两个括号的结果→ans[]保存最后结果。

 #include <iostream>
#define N 8100
using namespace std;
int num_1,num_2,num_5,ans[N],sup[N],tar;
int cal_and_search()
{//ans[]→sup[]→ans[]
int i,j,k;
num_2*=;
num_5*=;
memset(ans,,sizeof(ans)); //清零
memset(sup,,sizeof(sup));
for(i=;i<=num_1;i++) //初始化num_1+1个喔
ans[i]=;
for(j=;j<=num_2;j+=)//头两个括号相乘
for(k=;k<=num_1;k++)
sup[j+k]+=ans[k];
memset(ans,,sizeof(ans)); //ans置零
for(j=;j<=num_5;j+=) //上一步结果*第3个括号
for(k=;k<=num_1+num_2;k++)
ans[j+k]+=sup[k];
for(i=;i<=N;i++) //搜索
if(ans[i]==) return i;
}
int main()
{
while(scanf("%d%d%d",&num_1,&num_2,&num_5))
{
if(num_1==&&num_2==&&num_5==) return ; //结束
if(num_1==){printf("1\n");continue;}
tar=cal_and_search();
printf("%d\n",tar);
}
return ;
}

1085

HDU 1085 Holding Bin-Laden Captive! 活捉本拉登(普通型母函数)的更多相关文章

  1. HDU 1085 Holding Bin-Laden Captive! (母函数)

    Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

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

    Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  3. HDU 1085 Holding Bin-Laden Captive!(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1085 解题报告:有1,2,5三种面值的硬币,这三种硬币的数量分别是num_1,num_2,num_5, ...

  4. HDOJ/HDU 1085 Holding Bin-Laden Captive!(非母函数求解)

    Problem Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for ...

  5. hdu 1085 Holding Bin-Laden Captive!

    Problem Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for ...

  6. HDU 1085 Holding Bin-Laden Captive --生成函数第一题

    生成函数题. 题意:有币值1,2,5的硬币若干,问你最小的不能组成的币值为多少. 解法:写出生成函数: 然后求每项的系数即可. 因为三种硬币最多1000枚,1*1000+2*1000+5*1000=8 ...

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

    //给你面值为1,2,5的三种硬币固定的数目,求不能凑出的最小钱数 //G(x)=(1+x+...+x^num1)(1+x^2+...+x^2num2)(1+x^5+,,,+x^5num3), //展 ...

  8. hdu 1085 给出数量限制的母函数问题 Holding Bin-Laden Captive!

    Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  9. HDOJ 1085 Holding Bin-Laden Captive! (母函数)

    Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

随机推荐

  1. 【mybatis-记录】

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  2. nfs使用教程

    服务端 配置说明 文件名 /etc/exports 格式 <输出目录> [客户端 (访问权限,用户映射,其他) ] [客户端 (访问权限,用户映射,其他) ] 格式说明 输出目录:NFS系 ...

  3. limit 检索记录行

    LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定 ...

  4. cf837E(xjb)

    题目链接:http://codeforces.com/problemset/problem/837/E 题意:f(a, 0) = 0 ,     f(a, b) = 1 + f(a, b - gcd( ...

  5. 51nod1024(math+set)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1024 题意:中文题诶- 思路:要是能求出a^b的值来就好了. ...

  6. 最全 MySQL 优化方法,从此优化不再难

    说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原 ...

  7. C 语言实例 - 计算一个数的 n 次方

    C 语言实例 - 计算一个数的 n 次方 计算一个数的 n 次方,例如: ,其中 为基数, 为指数. 实例 - 使用 while #include <stdio.h> int main() ...

  8. $.store.book[?(@.title =~ /^.*Honour.*$/i)]

    { "store": { "book": [ { "category": "reference", "auth ...

  9. RandomAccesssFileTest

    package com.yd.wmsc.util; import java.io.IOException; import java.io.RandomAccessFile; public class ...

  10. Nologging操作对standby的影响

    1.primary 首先要设置为 force_log mode ,然后再做备份,在应用到备库上. 2.switch over 之前需要检查v$database_block_corruption  视图 ...