hdu 6092 Rikka with Subset 01背包 思维
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背包 思维相关推荐
- HDU 6092 Rikka with Subset 思维 递推
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6092 题目描述: 给你一个集合的所有子集各个和, 让你找到这个集合, 输出字典序最小 解题思路: 下 ...
- hdu 6149 Valley Numer II(01背包套状压dp)
题目链接:hdu 6149 Valley Numer II 题意: 给你N个点,有k个为高点,其他为低点,现在这N个点有m条边,问你最多能组成多少个两个高点一个低点,低点和两个高点都有边相连这样的状态 ...
- HDu 3449 (有依赖的01背包) Consumer
题意: 有n件物品,对应有不同的价格和价值,这是典型的01背包.但现在有了一个限制,要买物品先买能装这件物品的特定的盒子,盒子的价值为0 代码理解得还不是太好,感觉这是一个"二重" ...
- hdu 2602 Bone Collector(01背包)
题意:给出包裹的大小v,然后给出n块骨头的价值value和体积volume,求出一路下来包裹可以携带骨头最大价值 思路:01背包 1.二维数组(不常用 #include<iostream> ...
- codeforces 688 E. The Values You Can Make(01背包+思维)
题目链接:http://codeforces.com/contest/688/problem/E 题解:设dp[s1][s2]表示s1状态下出现s2是否合理.那么s1显然可以更具01背包来得到状态.首 ...
- hdu 1864 最大报销额01背包dp
最大报销额 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Subm ...
- hdu 2546 饭卡(01背包)
题意:只要最后留下的钱够5元,就可以买下最贵的食物,使得余额最低,其他的钱的使用就是一个最大背包问题了. 代码: #include<iostream> #include<cstrin ...
- hdu 2602 Bone Collector(01背包)模板
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Bone Collector Time Limit: 2000/1000 MS (Java/Ot ...
- hdu 2546 饭卡【01背包】
题目链接:https://vjudge.net/contest/103424#problem/C 饭卡 Time Limit: 5000/ ...
最新文章
- 32.3. redis-cli - Command-line client to redis-server
- 【线上分享】高性能视频推理引擎优化
- 英语学习过程中的几点体会(2)
- Android 应用开发(37)---RelativeLayout(相对布局)
- 【LOJ119】单源最短路 模板
- 用mysql做宠物商店项目_使用Java实现数据库编程 项目(宠物商店)
- 第十章(项目沟通管理)知识点
- 野猪写的《游戏程序中的骨骼插件》
- 深度Linux修改分辨率6,Deepin 修改自定义分辨率
- android 平板分辨率是多少合适,为什么越来越多的平板放弃16:9的屏幕比例?
- 快手Android一面复盘
- 已解决pandas创建DataFrame对象失败
- 百万点赞怎么来?Python批量制作抖音的卡点视频原来这么简单!
- 反距离加权法IDW C#实现
- 怎么将类似\u6570\u636e\u5e93的东西转化为汉字
- python爬空气污染实时数据_python数据分析综合项目--空气质量指数分析
- 成功改造企业文化的八项原则
- 生活不只有BAT,还有这些市值超1000亿的快消公司
- 【Python脚本】将Webp图片转jpg格式
- BT种子、磁力、ED2K下载工具_wentfar·tsao
热门文章
- java 二维数组动态添加,菜鸟求助: 二维数组如何实现动态接收?
- wxpython pyqt_python gui 中三大框架tkinter ,wxpython, pyqt如何选择
- php获取ajax data,HTML 获取 PHP 接口数据(ajax)
- mysql in 文本_MySQL_mysql 的load data infile,LOAD DATA INFILE语句从一个文本文 - phpStudy...
- 接口 vs 类型别名
- 两栏布局的5中实现方式
- html搜题软件,大学搜题app哪个好_大学好的搜题软件_大学搜题免费
- php对html加密解密,PHP Mcrypt和HTML5加密API加密/解密
- 氩焊机器人编程_谈一谈铝合金的脉冲MIG焊
- python 生成器原理_python生成器