codevs 1297 硬币
我们知道即使是同一种面值的硬币,它们的重量也有可能不一样,因为它受到许多因素的影响,包括制造工艺和流程上的。但是任何一种面值的硬币的重量总是处于某个特定范围之内。现在已知所有面值的硬币的重量范围。给定一堆硬币的总重量,问这堆硬币的总价值有多少种不同的可能。举例:已知一角硬币的重量在19到21之间,五角硬币的重量在40到43之间。有一堆硬币的总重量为99。则它可以由4个重量为20,1个重量为19的一角硬币组成,其总价值为5角,也可以由1个重量为42的五角硬币和3个重量为19的一角硬币组成,其总价值为8角,再或者由2个重量为40的五角硬币和1个重量为19的一角硬币组成,其总价值为1块1角。因此这堆硬币的总价值共有3种不同的可能。
第一行是一个整数w(10<=w<=100)表示所有硬币的总重量。第二行是一个整数n(1<=n<=7)表示不同面值的硬币总数。接下来n行每行3个整数,依次表示硬币的面值,最小可能重量和最大可能重量。硬币面值不超过50,最小重量不低于2,最大重量不高于100。最大重量和最小重量之间的差距不超过30。
仅包括一行表示这堆硬币的总价值有多少种不同的可能性。
99
2
1 19 21
5 40 43
3
分类标签 Tags 点此展开
/*基本思路:记忆化搜索*/
#include<iostream>
using namespace std;
#include<cstdio>
int w,n;
int f[][];
bool flag[];
long long int sum=;
struct Yb{
int wmin,wmax,val;
};
Yb yb[];
void dfs(int weigh,int count)
{ if(weigh>w||f[weigh][count])/*注意:搜索的边界:当搜索到总重量大于w,或者是找到了weigh和count都与原来相同的情况,那没就没有必要再找了,因为那些方案都已经找过了*/
return ;
f[weigh][count]=;
if(!flag[count]&&weigh==w)/*价值不重复找*/
{
sum++;
flag[count]=;
return ;
}
for(int i=;i<=n;++i)
{
for(int j=yb[i].wmin;j<=yb[i].wmax;++j)
dfs(j+weigh,yb[i].val+count);
}
}
int main()
{
scanf("%d%d",&w,&n);
for(int i=;i<=n;++i)
scanf("%d%d%d",&yb[i].val,&yb[i].wmin,&yb[i].wmax);
for(int i=;i<=n;++i)
{
for(int j=yb[i].wmin;j<=yb[i].wmax;++j)
dfs(j,yb[i].val);
}
cout<<sum<<endl;
return ;
}
codevs 1297 硬币的更多相关文章
- codevs——1297 硬币
1297 硬币 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 我们知道即使是同一种面值的硬币,它们的重量也 ...
- CODEVS——T 1297 硬币
http://www.codevs.cn/problem/1297/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- codevs 3961 硬币找零【完全背包DP/记忆化搜索】
题目描述 Description 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资. 我们应该 ...
- code[VS] 1297 硬币
题目描写叙述 Description 我们知道即使是同一种面值的硬币,它们的重量也有可能不一样,由于它受到很多因素的影响,包含制造工艺和流程上的.可是不论什么一种面值的硬币的重量总是处于某个特定范围之 ...
- codevs1297 硬币
1297 硬币 题目描述 Description 我们知道即使是同一种面值的硬币,它们的重量也有可能不一样,因为它受到许多因素的影响,包括制造工艺和流程上的.但是任何一种面值的硬币的重量总是处于某 ...
- codevs1297 硬币(背包dp,方案数)
1297 硬币 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 我们知道即使是同一种面值的硬币,它们的重量也有可能不一样, ...
- xth的第 12 枚硬币(codevs 1366)
题目描述 Description 传说 xth 曾经拥有11枚完全相同硬币(你懂得),不过今年呢,rabbit又送了他一 枚硬币.这枚硬币和其他硬币外观相同,只有重量不同,或轻或重.Xth 一不小心, ...
- codevs 5966 [SDOI2017]硬币游戏
输入描述 Input Description 输入输出数据精度为1e-10 [题解] #include<cstdio> using namespace std; ; char s[N][N ...
- 【CodeVS 1037】取数游戏
http://codevs.cn/problem/1037/ Alice必胜是Alice将硬币移向边权为0的一端并且把经过的边变为0,让BoB无路可走. 这样只要起点到两个方向最近的0边权的端点的边数 ...
随机推荐
- sublime在搜索的时候排除js文件
代码审计的时候sublime是一个神器.所以.... Ctrl + Shift + F /home/i3ekr/Desktop/coding/phpcms,*.php 这样就可以直接搜索所有的php文 ...
- Java的四种引用——强弱软虚
1.强引用—用new 当我们用new向堆区申请一片内存空间时,此时就是强引用. 当内存不足,GC(垃圾收集器)不会回收该强引用的对象. 2.软引用—用SofeReference类实现 用来描述一些还有 ...
- java===java基础学习(13)---this,static(静态变量和静态方法)的使用
package dog; public class PersonAndDog { public static void main(String[] args) { Dogs da_huang = ne ...
- 64_l5
libsmartcols-2.29.1-2.fc26.x86_64.rpm 13-Feb-2017 07:04 150590 libsmartcols-devel-2.29.1-2.fc26.i686 ...
- c#上传文件时,当选择的文件为0kb,会验证不通过
FileUpload1.HasFile 当FileUpload1控件选择的文件为0KB时,FileUpload1.HasFile返回false
- 【Android开发日记】之基础篇(二)——Android的动画效果
什么是动画,动画的本质是通过连续不断地显示若干图像来产生“动”起来的效果.比如说一个移动的动画,就是在一定的时间段内,以恰当的速率(起码要12帧/秒以上,才会让人产生动起来的错觉)每隔若干 ...
- 取消div,a等标签点击效果
当标签被设置onclick事件之后,在有些手机浏览器中,点击这些标签,会有点击变色效果.想要取消点击变色效果. 添加:div{-webkit-tap-highlight-color:rgba(0,0, ...
- servlet学习记录:Servlet中的service()方法
Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServ ...
- (1)ansible基本配置
1)ansible安装 yum install epel-release -y yum install ansible -y 2)ansible语法 语法: ansible <host-patt ...
- ButterKnife不同版本配置
7.0.1版本 compile 'com.jakewharton:butterknife:7.0.1' 8.0.1版本 module: apply plugin: 'com.android.appli ...