这题紫薯上翻译错了

应该是:如果有多个并列,输出邮票种类最少的那个,如果还有并列,输出最大面值最小的那个

坑了我一个下午

dp[p][q]==1表示可以用不超过q张组成面额p

结合记忆化,p从1开始枚举,一直枚举找到dp[p][q]=0的时候就可以了

这题应该归类成一种背包吧

注意dp初始化的时候应该初始化为-1(我就因为粗心,tle好久)

最后输出的时候比较恶心

最终的修改后的代码

实验证明,先读入所有数据后再处理比边读数据边处理要快

  1. /*
  2. * Author: Bingo
  3. * Created Time: 2015/3/4 13:54:40
  4. * File Name: uva242.cpp
  5. */
  6. #include <iostream>
  7. #include <cstdio>
  8. #include <cstdlib>
  9. #include <cstring>
  10. #include <cmath>
  11. #include <algorithm>
  12. #include <string>
  13. #include <vector>
  14. #include <stack>
  15. #include <queue>
  16. #include <set>
  17. #include <time.h>
  18. using namespace std;
  19. const int maxint = ;
  20. int S,T,n;
  21. int map[][];
  22. int dp[][];
  23. //int ans[20][20];
  24. int ans,ans_num,ans_max,ans_case;
  25. int fun(int p,int q,int c){
  26. if (dp[p][q]!=-) return dp[p][q];
  27. else if (p==){
  28. dp[p][q]=;
  29. return ;
  30. }else if (q==) {
  31. dp[p][q]=;
  32. return ;
  33. }else {
  34. for (int i=;i<=map[c][];i++) {
  35. if (p>=map[c][i]&&fun(p-map[c][i],q-,c)){
  36. dp[p][q]=;
  37. return ;
  38. }
  39. }
  40. }
  41. dp[p][q]=;
  42. return ;
  43. }
  44. int cmp(int a,int b){//比较最大连续邮资相同的集合
  45. if(map[a][]<map[b][])return a;
  46. if(map[b][]<map[a][])return b;
  47. for(int i=map[a][];i>;i--){
  48. if(map[a][i]<map[b][i])return a;
  49. if(map[b][i]<map[a][i])return b;
  50. }
  51. return a;
  52. }
  53. int main(){
  54. while (cin>>S&&S){
  55. cin>>T;
  56. int mycase=;
  57. ans=;ans_num=maxint;ans_max=maxint;
  58. while (T--){
  59. cin>>n;
  60. mycase++;
  61. memset(dp,-,sizeof(dp));
  62. map[mycase][]=n;
  63. for (int i=;i<=n;i++) {
  64. cin>>map[mycase][i];
  65. }
  66. int p;
  67. for (p=;;p++) {
  68. if (fun(p,S,mycase)==) break;
  69. }
  70. int t=p-;
  71. if (t>ans){
  72. ans=t;
  73. ans_case=mycase;
  74. }else if (t==ans){
  75. ans_case=cmp(mycase,ans_case);
  76. }
  77. }
  78. printf("max coverage =%4d :", ans);
  79. for(int i=;i<=map[ans_case][];i++){
  80. printf("%3d",map[ans_case][i]);
  81. }
  82. printf("\n");
  83. }
  84. return ;
  85. }

uva242,Stamps and Envelope Size的更多相关文章

  1. UVA-242 Stamps and Envelope Size (DP)

    题目大意:给一些邮票的面值组合,找出在限定的张数范围内能组合出连续最大值得那个组合. 题目分析:状态可以这样定义:dp(k,u)表示u能否用k张邮票组合成.状态转移方程很显然了. 代码如下: # in ...

  2. UVa 242 Stamps and Envelope Size (无限背包,DP)

    题意:信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最 大,输出最大连续邮资和集合元素. 最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最 ...

  3. UVA - 242 Stamps and Envelope Size (完全背包+bitset)

    题意:给你一些邮票面值的集合,让你选择其中一个集合,使得“能用不超过n枚集合中的邮票凑成的面值集合S中从1开始的最大连续面值”(即mex(S)-1)最大.如果有多解,输出集合大小最小的一个:如果仍有多 ...

  4. Stamps and Envelope Size

    题意: 容量为s的信封,给n组邮票的面值,求哪一组能组成的连续的面值的最大值最大,若有多组答案,输出面值数量最小的一组,若数量相等,输出最大面值最小的一组,若最大面值相等,输出第二大面值最小的一组,依 ...

  5. 【Uva 242】Stamps and Envelope Size

    [Link]: [Description] 给你n个集合; 每个集合都包含一些不同面额的邮票; (每种邮票都当做有无限张) 然后给你一封信上最多能贴的邮票张数S; 问你,哪一个集合的邮票; 能够贴出来 ...

  6. length()方法,length属性和size()的方法的区别

    length()方法,length属性和size()的方法的区别: length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法: length属性是针对Java中的数 ...

  7. iPhone launch screen,self.view.frame.size

    在工程文件中找到以下设置 "Launch Screen File"只支持iOS8以上版本,如果用之,则self.view.frame.size返回的结果为正常的当前view尺寸. ...

  8. [转]实例化SqlParameter时,如果是字符型,一定要指定size属性

    转自:http://bbs.csdn.net/topics/380155255 以前在实例化SqlParameter时,通常都是用下面的语句,没有设置size属性: new SqlParameter( ...

  9. 为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢?

    没有考虑到具体的问题上面,我们单纯的来讲: 为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢? list == null 说明list没有初始化( ...

随机推荐

  1. 学号:201521123116 《java程序设计》第三周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点. 书面作业 Q1:代码阅读 pu ...

  2. 201521123015 《Java程序设计》第3周学习总结

    本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点. 书面作业 Q1.代码阅读 publi ...

  3. 201521123093 java 第二周学习总结

    201521123093 <java程序设计> 第二周学习总结 一.第二周学习总结 答:(1)关于进一步使用码云管理代码,本周才真正学会了如何将Eclipse里的代码上传到码云中,并且能够 ...

  4. 201521123003《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  5. 201521123031 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  6. 控制结构(1) 分枝/叶子(branch/leaf)

    // 下一篇:卫语句(guard clause) 典型代码: function doSomething1(){ // ... } function doSomething2(){ // ... } f ...

  7. 基本的maven的命令行命令

    1.创建简单的maven 的web项目 mvn archetype:create 举例:mvn archetype:create -DgroupId=com.demo.app -DartifactId ...

  8. 基于注解方式实现Aop

    开启注解扫描 <context:component-scan base-package="aopSpring"></context:component-scan& ...

  9. c# 第一节课 一些简单的应用

    注册要钱 我没钱

  10. GCD之barrier

    1.在并行队列执行任务中,如果想让某一个任务先执行完后再执行其后面的任务,此时可以用dispatch_barrier_async,下图是dispatch_barrier_async函数的处理流程. 2 ...