HDU 1085 Holding Bin-Laden Captive! 活捉本拉登(普通型母函数)
题意:
有面值分别为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[]保存最后结果。
1 #include <iostream> 2 #define N 8100 3 using namespace std; 4 int num_1,num_2,num_5,ans[N],sup[N],tar; 5 int cal_and_search() 6 {//ans[]→sup[]→ans[] 7 int i,j,k; 8 num_2*=2; 9 num_5*=5; 10 memset(ans,0,sizeof(ans)); //清零 11 memset(sup,0,sizeof(sup)); 12 for(i=0;i<=num_1;i++) //初始化num_1+1个喔 13 ans[i]=1; 14 for(j=0;j<=num_2;j+=2)//头两个括号相乘 15 for(k=0;k<=num_1;k++) 16 sup[j+k]+=ans[k]; 17 memset(ans,0,sizeof(ans)); //ans置零 18 for(j=0;j<=num_5;j+=5) //上一步结果*第3个括号 19 for(k=0;k<=num_1+num_2;k++) 20 ans[j+k]+=sup[k]; 21 for(i=1;i<=N;i++) //搜索 22 if(ans[i]==0) return i; 23 } 24 int main() 25 { 26 while(scanf("%d%d%d",&num_1,&num_2,&num_5)) 27 { 28 if(num_1==0&&num_2==0&&num_5==0) return 0; //结束 29 if(num_1==0){printf("1\n");continue;} 30 tar=cal_and_search(); 31 printf("%d\n",tar); 32 } 33 return 0; 34 }
1085
转载于:https://www.cnblogs.com/xcw0754/p/4253456.html
HDU 1085 Holding Bin-Laden Captive! 活捉本拉登(普通型母函数)相关推荐
- hdu 1085 Holding Bin-Laden Captive!
Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long t ...
- HDOJ/HDU 1085 Holding Bin-Laden Captive!(非母函数求解)
Problem Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for ...
- HDU 1085 Holding Bin-Laden Captive!
这是拿三种不同的数量的硬币组合,然后你随便拿几个硬币组合,那么这就个硬币组合在一起的价值,不能等于某个数的最小值. 用母函数数感觉挺简单的,数组也不必开多大50就够了,其实可以更小.你想一下前面50都 ...
- hdu 1085 Holding Bin-Laden Capt
给你a个1,b个2,c个5,问你不能组成的最小整数是多少 简单母函数,算了下复杂度,1秒足够 #include<iostream> #include<cstring> #def ...
- 母函数的初识——本拉登 hdu 1085
题目链接 :母函数--本拉登 #include <iostream> #include <cstdio> #include <algorithm>using nam ...
- 【HDU - 1085 】Holding Bin-Laden Captive! (母函数)
题干: We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But ...
- HDU - 1613 Ecological Bin Packing
问题描述: Background Bin packing, or the placement of objects of certain weights into different bins sub ...
- hdu 1286 找新朋友 (容斥原理 || 欧拉函数)
Problem - 1286 用容斥原理做的代码: 1 #include <cstdio> 2 #include <iostream> 3 #include <algor ...
- 都是大人物,看看你认识几个。
突然找到一张老图,但是一直没能认识全部的人,下面名单是填的,不一定都正确. (想要原图留下邮件,我偶尔上来,如果看到会发给你的) =================================== ...
最新文章
- 分苹果问题的C++和Python实现
- 初涉c#设计模式-proxy pattern-从中国足球黑哨开始
- python yaml配置文件_python读取yaml配置文件
- 深入理解JAVA虚拟机 虚拟机性能监控和故障处理工具
- 【Android 事件分发】ItemTouchHelper 实现侧滑删除
- 计算机操作系统实验银行家算法,实验六 银行家算法(下)
- java学习(145):file常用方法2
- 数据结构与算法实战-C++实现
- LeetCode 1616. 分割两个字符串得到回文串
- 更司马懿学管理计算机,跟司马懿学管理(一)无悔的选择是好选择
- 算法练习——聪明的情侣
- 如何解决Mac启动盘已满的问题?MacBooster帮你清理20种垃圾文件!
- Android Studio 4.1一键生成代码Template
- oracle18cscott,Oracle 18c 数据库中scott用户不存在的解决方法
- 2021Java春招,java求职简历模板下载
- 西南科技大学OJ题 带权无向图存储判定1064
- 小程序开发:社区团购系统应该如何选择?
- 计算机图形学中划线的程序,计算机图形学划线实验报告
- 【实践案例分享】阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
- 幂乘法求最大特征值和特征向量