1297 硬币

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 查看运行结果
 
 
题目描述 Description

我们知道即使是同一种面值的硬币,它们的重量也有可能不一样,因为它受到许多因素的影响,包括制造工艺和流程上的。但是任何一种面值的硬币的重量总是处于某个特定范围之内。现在已知所有面值的硬币的重量范围。给定一堆硬币的总重量,问这堆硬币的总价值有多少种不同的可能。举例:已知一角硬币的重量在19到21之间,五角硬币的重量在40到43之间。有一堆硬币的总重量为99。则它可以由4个重量为20,1个重量为19的一角硬币组成,其总价值为5角,也可以由1个重量为42的五角硬币和3个重量为19的一角硬币组成,其总价值为8角,再或者由2个重量为40的五角硬币和1个重量为19的一角硬币组成,其总价值为1块1角。因此这堆硬币的总价值共有3种不同的可能。

输入描述 Input Description

第一行是一个整数w(10<=w<=100)表示所有硬币的总重量。第二行是一个整数n(1<=n<=7)表示不同面值的硬币总数。接下来n行每行3个整数,依次表示硬币的面值,最小可能重量和最大可能重量。硬币面值不超过50,最小重量不低于2,最大重量不高于100。最大重量和最小重量之间的差距不超过30。

输出描述 Output Description

仅包括一行表示这堆硬币的总价值有多少种不同的可能性。

样例输入 Sample Input

99

2

1 19 21

5 40 43

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint
 

分类标签 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 ;
}

最新文章

  1. 【转】使用Reflector和FileDisassembler反编译成项目文件
  2. hdu 1257 最少拦截系统
  3. linux ls -l命令结果含义解析
  4. SQL数据库对于保存特殊字符的解决办法
  5. ASP.Net MVC如何访问的静态页面
  6. linux用终端上传文件和文件家到远程的服务器
  7. Dynamics AX 2012 R2 在增强入站端口中找不到自定义服务操作
  8. SQL语句基础知识
  9. RubyWin32Api Win32OLE
  10. [译]Java Thread join示例与详解
  11. 使用Class.getResource和ClassLoader.getResource方法获取文件路径
  12. 返回某个界面——nav
  13. Taxonomy of class loader problems encountered when using Jakarta Commons Logging(转)
  14. Promise来控制JavaScript的异步执行
  15. 基于Xamarin Android实现的简单的浏览器
  16. Docker 创建 Jira Core(Jira SoftWare) 7.12.3 中文版
  17. SYN flooding引发的网络故障
  18. 布局:上下两个div高度固定,中间自适应
  19. mysql数据表自动导为python sqlalchemy可操作对象
  20. 时间序列HW

热门文章

  1. vim 以16进制进行文件编辑
  2. 【Python学习】Jupyter解决单个变量输出问题
  3. [New learn]GCD其他方法的使用
  4. apache加入chkconfig
  5. Linux系统编程——进程间通信(一)
  6. vue轮播,不是只有左右切换的,还有只切换src的
  7. java生成缩略图,旋转,水印,截图
  8. poj 2104(线段树)
  9. aliyun服务器ubuntu系统+MySQL+SqlDeveloper
  10. Centos7Yum安装Mysql8