code[VS] 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
DP+递归,这道题坑在了记忆化搜索那里。不知道用二维的数组记录,而是用一维的在死推。
这道题也让我意识到dp函数有多少个參数。就应该用几维的数组来记忆。
#include <bits/stdc++.h>
using namespace std; set<int> box;
int countt=0;
int w[300];
int v[300];
int sum,n;
int number=1;
int vis[102][2555]; void dp(int money,int sum){
//当初真是吃屎不知道用二维,用一维vis[money]有非常多种sum的情况无法一一保存。 if(vis[money][sum])
return;
//这时已经凑够了,sum就是面值。放到set里面
if(money==0){
box.insert(sum);
return;
}
vis[money][sum]=1;
for(int i=1;i<number;i++){
if(money>=w[i]){
dp(money-w[i],sum+v[i]);
}
}
} int main(){
scanf("%d",&sum);
scanf("%d",&n); int value,l,r;
for(int i=1;i<=n;i++){
scanf("%d %d %d",&value,&l,&r);
for(int j=l;j<=r;j++){
w[number]=j;
v[number++]=value;
}
}
dp(sum,0);
//set的大小就是答案
printf("%d\n",box.size());
}
code[VS] 1297 硬币的更多相关文章
- codevs 1297 硬币
1297 硬币 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 我们知道即使是同一种面值的硬币, ...
- codevs——1297 硬币
1297 硬币 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 我们知道即使是同一种面值的硬币,它们的重量也 ...
- CODEVS——T 1297 硬币
http://www.codevs.cn/problem/1297/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- codevs1297 硬币
1297 硬币 题目描述 Description 我们知道即使是同一种面值的硬币,它们的重量也有可能不一样,因为它受到许多因素的影响,包括制造工艺和流程上的.但是任何一种面值的硬币的重量总是处于某 ...
- codevs1297 硬币(背包dp,方案数)
1297 硬币 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 我们知道即使是同一种面值的硬币,它们的重量也有可能不一样, ...
- Java并发包--线程池原理
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509954.html 线程池示例 在分析线程池之前,先看一个简单的线程池示例. 1 import jav ...
- 【BZOJ-1042】硬币购物 容斥原理 + 完全背包
1042: [HAOI2008]硬币购物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1811 Solved: 1057[Submit][Stat ...
- 后缀数组 - 求最长回文子串 + 模板题 --- ural 1297
1297. Palindrome Time Limit: 1.0 secondMemory Limit: 16 MB The “U.S. Robots” HQ has just received a ...
- lintcode :Coins in Line II 硬币排成线 II
题目 硬币排成线 II 有 n 个不同价值的硬币排成一条线.两个参赛者轮流从左边依次拿走 1 或 2 个硬币,直到没有硬币为止.计算两个人分别拿到的硬币总价值,价值高的人获胜. 请判定 第一个玩家 是 ...
随机推荐
- 查询UNDO使用情况
查看UNDO事务占用情况 SELECT s.username, s.sid, pr.PID, s.OSUSER, s.MACHINE, s.PROGRAM, rs.segment_id, r.usn, ...
- 【转】Eric's并发用户数估算与Little定律的等价性
转自:http://www.cnblogs.com/hundredsofyears/p/3360305.html 在国内性能测试的领域有一篇几乎被奉为大牛之作的经典文章,一个名叫Eric Man Wo ...
- iOS学习笔记18-CoreData
一.CoreData介绍 CoreData是iOS5之后新出来的的一个框架, 是对SQLite进行一层封装升级后的一种数据持久化方式.它提供了对象<-->关系映射的功能,即能够将OC对象转 ...
- 算法复习——LCA模板(POJ1330)
题目: Description A rooted tree is a well-known data structure in computer science and engineering. An ...
- PHP中的验证码类(准备篇)
<!--code.php内容--> <?php //开启session session_start(); include "vcode.class.php"; / ...
- 圆桌聚餐(cogs 729)
«问题描述:假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐.为了 ...
- 软件包管理器(bzoj 4196)
Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...
- Day 13 Python 一之helloworld
直接肝程序吧! """ # 作业六:用户登录测试(三次机会) count = 1 while count <= 3: user = input('请输入用户名: ' ...
- golang测试框架--smartystreets/goconvey
视频教程和配套博客:goconvey - 课时 1:优雅的单元测试 Go 语言虽然自带单元测试功能,在 GoConvey 诞生之前也出现了许多第三方辅助库.但没有一个辅助库能够像 GoConvey 这 ...
- Lighttpd 服务器的安装
https://www.cnblogs.com/rongfengliang/articles/3503228.html