CODEVS——T 1297 硬币

http://www.codevs.cn/problem/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

二维数组记录访问状态、

在一位数组上计较半天。。zz啊

 1 #include <algorithm>
 2 #include <cstdio>
 3
 4 inline void read(int &x)
 5 {
 6     x=0; register char ch=getchar();
 7     for(; ch>‘9‘||ch<‘0‘; ) ch=getchar();
 8     for(; ch>=‘0‘&&ch<=‘9‘; ch=getchar()) x=x*10+ch-‘0‘;
 9 }
10
11 int n,w,ans,cnt,ca;
12 int cw[5001],cv[5001];
13 bool get[5001],vis[126][5001];
14
15 void DFS(int noww,int sumv)
16 {
17     if(vis[noww][sumv]) return ;
18     if(!noww)
19     {
20         if(!get[sumv]) ans++;
21         get[sumv]=1;
22         return ;
23     }
24     vis[noww][sumv]=1;
25     for(int i=1; i<=cnt; ++i)
26         if(noww>=cw[i])
27         DFS(noww-cw[i],sumv+cv[i]);
28 }
29
30 int AC()
31 {
32     read(w),read(n);
33     for(int val,l,r,i=1; i<=n; i++)
34     {
35         read(val),read(l),read(r);
36         for(int j=l; j<=r; ++j)
37             cv[++cnt]=val,cw[cnt]=j;
38     }
39     DFS(w,0);
40     printf("%d\n",ans);
41     return 0;
42 }
43
44 int Aptal=AC();
45 int main(){;}
时间: 2024-10-07 10:10:47

CODEVS——T 1297 硬币的相关文章

1297 硬币

1297 硬币 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 我们知道即使是同一种面值的硬币,它们的重量也有可能不一样,因为它受到许多因素的影响,包括制造工艺和流程上的.但是任何一种面值的硬币的重量总是处于某个特定范围之内.现在已知所有面值的硬币的重量范围.给定一堆硬币的总重量,问这堆硬币的总价值有多少种不同的可能.举例:已知一角硬币的重量在19到21之间,五角硬币的重量在40到43之间.有一堆硬币的总重量为99.则它可

code[VS] 1297 硬币

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

codevs1297 硬币

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

xth的第 12 枚硬币(codevs 1366)

题目描述 Description 传说 xth 曾经拥有11枚完全相同硬币(你懂得),不过今年呢,rabbit又送了他一 枚硬币.这枚硬币和其他硬币外观相同,只有重量不同,或轻或重.Xth 一不小心, 将这枚特殊的硬币和其他硬币混在了一起.Rabbit 知道后很生气,要他立刻把那枚 硬币找出来,并且还要说出这枚硬币是轻还是重.可怜的 Xth 只有一架普通托盘天 平,并且只能称量三次(每次称量,两边各四枚).现在全部 12枚硬币编号为 A~L,现给出你三次称量的结果,请你帮 xth 找出那枚不一样

codevs 3961 硬币找零【完全背包DP/记忆化搜索】

题目描述 Description 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资. 我们应该注意到,人民币的硬币系统是100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数.但不幸的是:我们可能没有这样一种好的硬币系统,因此用贪心算法不能求出最少的硬币数,甚至有些金钱总数还不能用这些硬币

[codevs]1060搞笑世界杯

CODEVS上一道钻石题,还是DP的思想,先来题目 1060 搞笑世界杯 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 随着世界杯小组赛的结束,法国,阿根廷等世界强队都纷纷被淘汰,让人心痛不已. 于是有 人组织了一场搞笑世界杯,将这些被淘汰的强队重新组织起来和世界杯一同比赛.你和你的朋 友欣然去购买球票.不过搞笑世界杯的球票出售方式也很特别,它们只准备了两种球票.A 类 票------免费球票 B 类票------

codevs 1060 搞笑运动会 dp

1060 搞笑世界杯 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codevs.cn/problem/1060/ Description 随着世界杯小组赛的结束,法国,阿根廷等世界强队都纷纷被淘汰,让人心痛不已. 于是有 人组织了一场搞笑世界杯,将这些被淘汰的强队重新组织起来和世界杯一同比赛.你和你的朋 友欣然去购买球票.不过搞笑世界杯的球票出售方式也很特别,它们只准备了两种球票.A 类 票------免费球票 B 类票-------

[ CodeVS冲杯之路 ] P2492

不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直接树状数组(以下简称BIT)维护,修改操作就一个个暴力开方搞,再用差值单点更新BIT 不过这样会TLE,要加一点优化对不对,正如开头所说的路径压缩链表 路径压缩链表其实就是个并查集,在普通的链表里,删去两个连续的节点后会是下面这种情况,如删去2,3 当访问 2 的时候,会跳到3,但 3 已经删除了,

【bzoj1042】 HAOI2008—硬币购物

http://www.lydsy.com/JudgeOnline/problem.php?id=1042 (题目链接) 题意:共有4种硬币,面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买s的价值的东西.请问每次有多少种付款方法. Solution  容斥原理.  设F[i]为不考虑每种硬币的数量限制的情况下,得到面值i的方案数.则状态转移方程为 F[i]=Sum{F[i-C[k]] | i-C[k]>=0 且 k=1..4} ,边界条件F[0]=0.