Stamps ans Envelope Sive UVA - 242】的更多相关文章

( ||{集合x}表示x中元素1||x中元素2||...||x的最后一个元素||(a,b)表示a||b) ans[i][j][k]表示考虑前i种邮票时取j个邮票能否得到面值kans[i][j][k]= ||{ans[i-1][j-p][k-p*a[i]]}(0<=p<=j,p*a[i]<=k)ans[i][j][k]= ||(ans[i-1][j][k],ans[i-1][j-1][k-a[i],...,ans[i-1][j-p][k-p*a[i]])ans[i][j-1][k-a[i]…
242 - Stamps and Envelope Size Time limit: 3.000 seconds  Stamps and Envelope Size  Philatelists have collected stamps since long before postal workers were disgruntled. An excess of stamps may be bad news to a country's postal service, but good news…
题意:给你一些邮票面值的集合,让你选择其中一个集合,使得“能用不超过n枚集合中的邮票凑成的面值集合S中从1开始的最大连续面值”(即mex(S)-1)最大.如果有多解,输出集合大小最小的一个:如果仍有多解,输出面值从大到小排序后最小的一个. 少数能用bitset优化的dp问题之一.设bs[i]为用不超过i枚邮票能凑成的面值集合,正在放进的邮票面值为j,则有状态更新公式:$bs[i+1]=bs[i]|(bs[i]<<j)$,根据这个公式进行转移即可. 保存答案可以用vector,便于长度以及字典序…
题意:信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最 大,输出最大连续邮资和集合元素. 最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最大连续邮资就是n.如果不止一个集合结果相 同,输出集合元素少的, 如果仍相同,输出最大面值小的. 析:这个题,紫书上写的不全,而且错了好几次,结果WA好几次. 首先这个和背包问题差不多,我们只用一维就好.dp[i]表示邮资为 i 时的最小邮票数,然后,如果dp[i] > s就该结束了. 其他的就很简…
[Link]: [Description] 给你n个集合; 每个集合都包含一些不同面额的邮票; (每种邮票都当做有无限张) 然后给你一封信上最多能贴的邮票张数S; 问你,哪一个集合的邮票; 能够贴出来从1开始的,最大的连续邮票面额 优先输出小的集合,集合大小一样的话,从大到小排序后,字典序小的优先输出; [Solution] 每个邮票都是一个物品; 假设每个邮票都最多能拿S个; 做一个多重背包即可 这里 设f[i][j]表示前i个邮票,邮票的总面额为j的情况最少需要的邮票张数; 对每个集合都做一…
Stamps and Enovelope Size 题意: 给你最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最大,输出最大连续邮资和集合元素. 如果不止一个集合结果相同,输出集合元素少的,如果仍相同,输出最大面值小的. 思路: 最开始直接进行的深搜,感觉应该会TL,就放弃了.主要是莫有想到记忆化搜索的使用 - -, 果然太年轻. 用dp[i][j]表示使用了j个邮票后还差i,. 记忆化搜索找出最大的可能,如果有相同的则进行比较 #include <iostrea…
题目链接:https://vjudge.net/contest/146179#problem/D 题意: 信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最大,输出最大连续邮资和集合元素.最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最大连续邮资就是n.如果不止一个集合结果相同,输出集合元素少的,如果仍相同,输出最大面值小的. 这个题意,刘汝佳的书上输出刚好写反. 分析: 先看一组数据.求最大连续邮资,那我想用二分啊,看这个答案是不是符…
这题紫薯上翻译错了 应该是:如果有多个并列,输出邮票种类最少的那个,如果还有并列,输出最大面值最小的那个 坑了我一个下午 dp[p][q]==1表示可以用不超过q张组成面额p 结合记忆化,p从1开始枚举,一直枚举找到dp[p][q]=0的时候就可以了 这题应该归类成一种背包吧 注意dp初始化的时候应该初始化为-1(我就因为粗心,tle好久) 最后输出的时候比较恶心 最终的修改后的代码 实验证明,先读入所有数据后再处理比边读数据边处理要快 /* * Author: Bingo * Created…
题意:给定多种邮票的组合,邮票最多只能用S张,这些邮票能组成许多不同面额,问最大连续面额的长度是多少,如果有多个组合输出组合中邮票数量最少的,如果仍有长度一致的,输出邮票从大到小排序后字典序最大的那个组合. 思路:d(i)表示面额为i的至少需要多少张邮票才能组成,转移方程d(i) = min(d(k) + d(i - k)),1 <= k < i.    注意:邮票数量不能超过S张,连续是指从1~max,也就是说连续必须以1作为开头,否则就算后面能组成更长的连续也不算. AC代码: #incl…
https://vjudge.net/problem/UVA-242 题意: 输入s(每个信封能粘贴的最多邮票数量)和若干邮票组合,选出最大连续邮资最大的一个组合(最大连续邮资也就是用s张以内的邮票来凑1,2,3,4...n,如果无法凑成n+1,那么最大值也就是n了).如果有多个最大值,则优先考虑邮票数少的,其次考虑邮票面值最大的那个更小的. 思路: 完全背包问题. 完全背包是物品无限,在这里和题意相符合,每种邮票也是可以无限使用的.最大连续邮资就相当于一个背包容量,d[i]表示当最大连续邮资为…