HDU3466背包01】的更多相关文章

Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 3126    Accepted Submission(s): 1288 Problem Description Recently, iSea went to an ancient country. For such a long time, it was…
BZOJ_4753_[Jsoi2016]最佳团体_树形背包+01分数规划 Description JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一位 编号比他小的候选人Ri推荐.如果Ri=0则说明这个候选人是JYY自己看上的.为了保证团队的和谐,JYY需要保证, 如果招募了候选人i,那么候选人Ri"也一定需要在团队中.当然了,JYY自己总是在团队里的.每一个候选人都有 一个战斗值Pi",也有一个招募费用Si".JYY…
题意是: 给你一些钱 m ,然后在这个国家买东西, 共有 n 件物品,每件物品有  价格 P    价值 V    还有一个很特别的属性 Q, Q 指 你如过想买这件物品 你的手中至少有这钱Q . 虽然你只要花费 钱P ,但你的手中至少有钱Q,如果不足Q ,不能买.问给你钱M ,列出N件物品,最多能获得多少价值的东西.... 这道题如果没有Q的限制的话就是一道01背包的水题,但是加上了Q的限制这就是一道考察对DP的深刻理解的题目了,好多题解上说按照p-q从大到小排序即可,但是至于为什么并没有说透…
题意: 有n<=100双鞋子,分别属于一个牌子,共k<=10个牌子.现有m<=10000钱,问每个牌子至少挑1双,能获得的最大价值是多少? 思路: 分组背包的变形,变成了相反的,每组物品至少挑1件(分组背包问题是至多挑1件). 由于每个牌子至少买1双,那么可以先装一件最便宜的进去,如果有好的再更新(注意每次的容量下限).而且同一双鞋子不能多次购买,这里要用01背包.对于当前容量cap,可能只装了某一牌子的一双鞋子(不一定最便宜),也可能装了多双,也可能只装了那双硬塞进去的最便宜的. 注意…
4753: [Jsoi2016]最佳团体 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2003  Solved: 790[Submit][Status][Discuss] Description JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一位 编号比他小的候选人Ri推荐.如果Ri=0则说明这个候选人是JYY自己看上的.为了保证团队的和谐,JYY需要保证, 如果招募了候选人i,那么候…
Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 5566    Accepted Submission(s): 2345 Problem Description Recently, iSea went to an ancient country. For such a long time, it was…
/* 从一组数据中选出n个数,使这n个数的和最接近一个值x, 背包问题, 从一系列菜中,从最贵的菜(MAX)之外中选出几个菜,使菜的总价格sum最接近money-5:money-sum-MAX; 钱数相当于背包总容量,菜相当于价值和体积一样物品: */       #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std;…
吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2377    Accepted Submission(s): 893 Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压…
解题报告 pid=1864">题目传送门 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define inf 99999999 using namespace std; int v,w[35],d[4],dw1,sum,dp[31*1000*100]; int main() { double Q,dw; int n,i,j,m,t;…
★.背包求方案数的时候,多重背包是不行的,因为产生重复的背包会有多种情况. ★.背包记录路径的时候,其实是不行的,因为更新了12的最优解,如果它依赖于6这个背包,然后你后面改变了6这个背包,就GG 1.01背包问题. tot:总背包空间,vall[i]:每件物品的价值,w[i]:每件物品的重量 http://acm.hdu.edu.cn/showproblem.php?pid=2602 01背包明显可以只写一维的,所以二维的就不写了. 关于为什么可以只写一维的呢?这就和你枚举的顺序有关了.从to…
Cash Machine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33444   Accepted: 12106 Description A Bank plans to install a machine for cash withdrawal. The machine is able to deliver appropriate @ bills for a requested cash amount. The m…
题目描述 组合背包:有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包). DD大牛的伪代码 for i = 1 to N if 第i件物品属于01背包 ZeroOnePack(F,Ci,Wi) else if 第i件物品属于完全背包 CompletePack(F,Ci,Wi) else if 第i件物品属于多重背包 MultiplePack(F,Ci,Wi,Ni) 输入 第一个数为数据组数n 1<=n<=10 接下来n组测试数据,每组…
I love sneakers! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4602    Accepted Submission(s): 1893 Problem Description After months of hard working, Iserlohn finally wins awesome amount of s…
//新手DP学习中 = =!! 前言:背包问题在dp中可以说是经典,作为一个acmer,到现在才正式学习dp,可以说是比较失败的.我个人比较认同一点,想要做一个比较成功的acmer,dp.搜索.数学必须精练,比较遗憾的是,对我我自身而言,并没有早早的认识到这个问题,不过现在知道了,还有一年,也不算晚.还有,我建议学背包的童鞋,都看背包九讲...... dp之01背包 01背包,做为背包中最基础的一类背包,必须要掌握好,当然我这里说的掌握好,并不是说,你横扫hdu或者poj等oj上01背包模板题就…
有关背包,我这几天可是尽受其苦(不得不靠我聪颖的背诵代码的大脑来进行一波操作) Step 1      01背包 关于01背包的主要代码: ;j<=m;j++) { for(int i=n;i>=v[j];i--) { dp[i]=max(dp[i],dp[i-v[j]]+p[j]); } } ;j<=m;j++) { for(int i=v[j];i<=m;i++) { dp[i]=max(dp[i],dp[i-v[j]]+p[j]); } } 就是从低到高排序做. 下几篇就是关…
思路: 多重背包转成01背包,怎么转?把一种大米看成一堆单个的物品,每件物品要么装入,要么不装.复杂度比01背包要大.时间复杂度为O(vns)(这里S是所有物品的数量s之和).这个做法太粗糙了,但就是AC了.假如某一种大米有很多件,那麻烦大了. 0MS 1084K 706B C++ 这是用“单纯转01背包”实现的,速度还这么快,还需优化不? # include <stdio.h> # include <string.h> ] ;//转成01背包的解法,没有任何优化. int max…
1775: [Usaco2009 Dec]Vidgame 电视游戏问题 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1775 题解: 发现是个$zz$分组背包. 但是,正常的分组背包是,完全背包+01背包,在这里根本行不通因为数据范围. 故此我们考虑背包$dp$. 状态:$f_{(i,j)}$表示前$i$组,$i$选,花费$j$的最大价值:$g_{(i,j)}$表示$i$不选. 因为空间开的下,所以我们可以把$i$也放进去. 不然$…
这道题虽然水水的,但是还是成功地给我增加了10多个WA. 最开始拿着题,一看,依赖背包嘛~直接DFS树形DP嗨起来,甚至连内存都没有算一下,3MLE: 然后又仔细看了一下题,没有必要用树形背包来做嘛,对每个背包01,就可以得到每个背包的泛化物品.结果又没有注意 把它们泛化物品的和写成了完全背包(囧),WA个无限. 做了很久才找到根源,结果又TLE了(再囧). 后来又想了想,其实在之前求01背包的时候,就和后面的泛化物品求和有许多重复的计算,因为单纯地泛化物品的和其实效率挺低的(n^2) 可以知道…
DP基础 简单dp 背包问题 记忆化搜索 简单dp 数字三角形 给一个数字构成的三角形,求从顶端走到底部的一条路径,使得路径上的和最大(或者最小). 1 2 3 6 5 4 Example_1 7 3 8 8 1 0 5 2 6 100000 Example_2 根据Example_2可以知道贪心显然是不正确的. 可以看出,除了两边的点以外,每个点可以上一层的两个位置之一到达当前点. 如果我们知道上一层的从顶端到达两个位置的最大路径值,那么对于当前点来说,必然选择较大的那个位置转移过来,也就得到…
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64uDescription 一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉.   研究人员有n种类型的砖块,每种类型的砖块都有无限个.第i块砖块的长宽高分别用xi,yi,zi来表示. 同时,由于砖块是可以…
简单DP i.May I ask you for a dance(体舞课软广植入) 这题的状态转移方程为:dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1]);(i<=j) 方法1:预处理:将i==j的情况提取出来,因为当i==j的时候,序列顺序是固定的,只能从1选到i(感谢zzdl) 方法2:将i>=j的情况全部赋值为-inf,这样在选取的时候就能够保证i>=j不会被选取 方法3:好感度可能为负值,范围为-100~100:因为dp初始化为0,所以可…
树形DP入门 poj 2342 Anniversary party   先来个题入门一下~ 题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人(多少人)来能使得晚会的总活跃指数最大. 解题思路: 任何一个点的取舍可以看作一种决策,那么状态就是在某个点取的时候或者不取的时候,以他为根的子树能有的最大活跃总值.分别可以用f[i,1]和f[i,0]表示第i个人来和不来. 当…
Luogu 1941 [NOIP2014]飞扬的小鸟 (动态规划) Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游…
算法笔记(c++)--完全背包和多重背包问题 完全背包 完全背包不同于01背包-完全背包里面的东西数量无限 假设现在有5种物品重量为5,4,3,2,1  价值为1,2,3,4,5  背包容量为10 #include <iostream> #include<algorithm> using namespace std; int main() { ; ] = { ,,,,,}; ] = { ,,,,,}; ] = { }; ; i <= ; i++) ;j++) dp[j] =…
动态规划1 动态规划问题是面试题中的热门话题,如果要求一个问题的最优解(通常是最大值或者最小值),而且该问题能够分解成若干个子问题,并且小问题之间也存在重叠的子问题,则考虑采用动态规划. 1.LLS 最长上升子序列 2.最大子段和 3.背包 01背包 完全背包 多重背包 混合背包 分组背包 多维背包 输出方案 输出方案种数 最优方案种数 第k优数 A - Tickets Jesus, what a great movie! Thousands of people are rushing to t…
N - 概率 Time Limit:4000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Description As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (he wants everything quick!) so he decided to rob banks.…
bzoj4753 树形dp+01分数规划 这是一个典型的树形背包+01分数规划.看见分数形式最大就应该想到01分数规划. 于是套用分数规划,每次用树形背包检验. 首先这是一棵树,不是一个森林,所以我们不用添加虚点.然后可以列出dp方程,具体代码. 然后每个点如果自己选了,那么父亲也要选,所以更新的时候,除了jyy也就是0号节点,都是从dp[u][1]开始更新,而且初值就是dp[u][0]=0,dp[u][1]=val,因为儿子选了,自己肯定会选,所以不能出现 dp[u][i]=dp[u][0]+…
DP的背包问题可谓是最基础的DP了,分为01背包,完全背包,多重背包 01背包 装与不装是一个问题 01背包基本模型,背包的总体积为v,总共有n件物体,每件物品的体积为v[i],价值为w[i],每件物品只有一个,怎么使背包内尽可能的装更多的物品且价值最大? 模板为一维滚动数组,f[m]表示装m的最大价值和. 可得状态转移方程为 f[j]=max(f[j],f[j-v[i]]+w[i]) 也就是f[i]为装,那么总体积数相减然后价值增加,或者不装什么都不变. 例题 https://www.luog…
例题 #A 传纸条(Accepted)    #B 乘积最大 (Unaccepted)    #C 石子合并 (Accepted)    #D 加分二叉树 (Unaccepted)    #E 没有上司的舞会(Unaccepted)    #F 选课 (Accepted)    #G 警卫安排 (Unaccepted)    #H 通向自由的钥匙 (Unaccepted) #I 导弹拦截 (Unaccepted)    #J [HAOI2010]最长公共子序列 (Unaccepted)    #…
*注 虽然没什么人看我的博客但我还是要认认真真写给自己看 背包问题应用场景给定 n 种物品和一个背包.物品 i 的重量是 w i ,其价值为 v i ,背包的容量为C.应该如何选择装入背包中的物品,使得装入背包的总价值最大?*01 背包 *01 背包特点: 给定 n 种物品和一个背包 ( 每个物品只能选取一个).物品 i 的重量是w[i],其价值为v[i],背包的容量为C.应该如何选择装入背包中的物品,使得装入背包中的物品的总价值最大?*状态: dp[i][j] 表示在只能从 1-i 个物品中选…