dp[i][j]表示前i个元素,子集和为j的个数。d[i][j] = d[i][j] + d[i-1][j-k] (第i个元素的值为k)。这里可以优化成一维数组

比如序列为 1 2 3,每一步的dp值为

1 0 0 0 0 0 0  (d[0][0]=1)

1 1 0 0 0 0 0

1 1 1 1 0 0 0

1 1 1 2 1 1 1

最终的序列就是题目给出的B序列,把B序列减去每一次dp得到的序列,第一个非0值就是a序列中的值

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define max_n 10010
using namespace std;
int a[max_n], b[max_n], dp[max_n];
//dp[i]表示:和为i的子集个数int main()
{
//    freopen("in.txt","r",stdin);int t, n, m;scanf("%d", &t);while(t--){memset(dp, 0, sizeof(dp));scanf("%d %d", &n, &m);for(int i = 0; i <= m; i++)scanf("%d", &b[i]);dp[0] = 1; //初始化值int num = 0;for(int i = 1; i <= m; i++){int t = b[i] - dp[i];//A序列中值为i的个数for(int j = 0; j < t; j++){a[num++] = i; //对A序列赋值for(int k = m; k>= i; k--)   //处理成01背包
                {dp[k] += dp[k - i]; //计算和为k的A子集个数
                }}}for(int i = 0; i < num; i++){if(i > 0) printf(" ");printf("%d", a[i]);//输出A序列
        }printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/pach/p/7323749.html

hdu 6092 Rikka with Subset 01背包 思维相关推荐

  1. HDU 6092 Rikka with Subset 思维 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6092 题目描述: 给你一个集合的所有子集各个和, 让你找到这个集合, 输出字典序最小 解题思路: 下 ...

  2. hdu 6149 Valley Numer II(01背包套状压dp)

    题目链接:hdu 6149 Valley Numer II 题意: 给你N个点,有k个为高点,其他为低点,现在这N个点有m条边,问你最多能组成多少个两个高点一个低点,低点和两个高点都有边相连这样的状态 ...

  3. HDu 3449 (有依赖的01背包) Consumer

    题意: 有n件物品,对应有不同的价格和价值,这是典型的01背包.但现在有了一个限制,要买物品先买能装这件物品的特定的盒子,盒子的价值为0 代码理解得还不是太好,感觉这是一个"二重" ...

  4. hdu 2602 Bone Collector(01背包)

    题意:给出包裹的大小v,然后给出n块骨头的价值value和体积volume,求出一路下来包裹可以携带骨头最大价值 思路:01背包 1.二维数组(不常用 #include<iostream> ...

  5. codeforces 688 E. The Values You Can Make(01背包+思维)

    题目链接:http://codeforces.com/contest/688/problem/E 题解:设dp[s1][s2]表示s1状态下出现s2是否合理.那么s1显然可以更具01背包来得到状态.首 ...

  6. hdu 1864 最大报销额01背包dp

     最大报销额 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Subm ...

  7. hdu 2546 饭卡(01背包)

    题意:只要最后留下的钱够5元,就可以买下最贵的食物,使得余额最低,其他的钱的使用就是一个最大背包问题了. 代码: #include<iostream> #include<cstrin ...

  8. hdu 2602 Bone Collector(01背包)模板

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Bone Collector Time Limit: 2000/1000 MS (Java/Ot ...

  9. hdu 2546 饭卡【01背包】

    题目链接:https://vjudge.net/contest/103424#problem/C 饭卡                                Time Limit: 5000/ ...

最新文章

  1. 32.3. redis-cli - Command-line client to redis-server
  2. 【线上分享】高性能视频推理引擎优化
  3. 英语学习过程中的几点体会(2)
  4. Android 应用开发(37)---RelativeLayout(相对布局)
  5. 【LOJ119】单源最短路 模板
  6. 用mysql做宠物商店项目_使用Java实现数据库编程 项目(宠物商店)
  7. 第十章(项目沟通管理)知识点
  8. 野猪写的《游戏程序中的骨骼插件》
  9. 深度Linux修改分辨率6,Deepin 修改自定义分辨率
  10. android 平板分辨率是多少合适,为什么越来越多的平板放弃16:9的屏幕比例?
  11. 快手Android一面复盘
  12. 已解决pandas创建DataFrame对象失败
  13. 百万点赞怎么来?Python批量制作抖音的卡点视频原来这么简单!
  14. 反距离加权法IDW C#实现
  15. 怎么将类似\u6570\u636e\u5e93的东西转化为汉字
  16. python爬空气污染实时数据_python数据分析综合项目--空气质量指数分析
  17. 成功改造企业文化的八项原则
  18. 生活不只有BAT,还有这些市值超1000亿的快消公司
  19. 【Python脚本】将Webp图片转jpg格式
  20. BT种子、磁力、ED2K下载工具_wentfar·tsao

热门文章

  1. java 二维数组动态添加,菜鸟求助: 二维数组如何实现动态接收?
  2. wxpython pyqt_python gui 中三大框架tkinter ,wxpython, pyqt如何选择
  3. php获取ajax data,HTML 获取 PHP 接口数据(ajax)
  4. mysql in 文本_MySQL_mysql 的load data infile,LOAD DATA INFILE语句从一个文本文 - phpStudy...
  5. 接口 vs 类型别名
  6. 两栏布局的5中实现方式
  7. html搜题软件,大学搜题app哪个好_大学好的搜题软件_大学搜题免费
  8. php对html加密解密,PHP Mcrypt和HTML5加密API加密/解密
  9. 氩焊机器人编程_谈一谈铝合金的脉冲MIG焊
  10. python 生成器原理_python生成器