【洛谷P1858】多人背包】的更多相关文章

目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 洛谷 P1858 多人背包 题目描述 求01背包前k优解的价值和 输入输出格式 输入格式 第一行三个数 $ K,V,N $ 接下来每行两个数,表示体积和价值 输出格式 前 $ k $ 优解的价值和 输入输出样例 输入样例 2 10 5 3 12 7 20 2 4 5 6 1 1 输出样例 57 说明 对于100%的数据, $ K \leq 50,V \leq…
P1858 多人背包 题目描述 求01背包前k优解的价值和 输入输出格式 输入格式: 第一行三个数\(K\).\(V\).\(N\) 接下来每行两个数,表示体积和价值 输出格式: 前k优解的价值和 说明 对于100%的数据,$ K\le 50,V\le 5000,N\le 200$ 算是积累见识吧,有些类型的题不见过一面估计比较难想 方程为\(dp[i][j][k]\)代表前\(i\)中在装了\(j\)时第\(k\)优值 如何转移呢 对\(dp[i][j]\)来说,由\(dp[i-1][j]\)…
洛谷题目链接:多人背包 题目描述 求01背包前k优解的价值和 输入输出格式 输入格式: 第一行三个数K.V.N 接下来每行两个数,表示体积和价值 输出格式: 前k优解的价值和 输入输出样例 输入样例#1: 2 10 5 3 12 7 20 2 4 5 6 1 1 输出样例#1: 57 说明 对于100%的数据, \(K\le 50,V\le 5000,N\le 200\) 题意已经很清楚了,就不多赘述了. 题解: 首先考虑一下如何做01背包.显然有\[f[j]=max(f[j], f[j-cos…
求01背包前k优解的价值和 输入输出格式 Input/output 输入格式:第一行三个数K.V.N(k<=50,v<=5000,n<=200)接下来每行两个数,表示体积和价值输出格式:前k优解的价值和 解题思路: 这个题刚开始没做出来只能说是因为我没有认真地去看那个叫背包九讲的东西(这里附网址 http://wenku.baidu.com/view/519124da5022aaea998f0f22.html) 背包九讲中第九讲明确给出求次小值及第k小值的办法,做两个队列,b1,b2,用…
,,,本来自以为,我dp学得还挺好的 然后今天一考发现都不会啊QAQ 连最基础的知识点都不清楚啊QAQ 所以就来写个题解嘛! 先放下板子题 其实我jio得,这题只要大概了解方法就不是很难鸭,,,毕竟是基础算法,还是比较好理解的QAQ 大概说下QwQ 就是开f[i],它是个一个长度为k的数组,表示的是重量为i时的前k优解(物品那一维显然可以滚掉不说 然后转移也很显然,就是f[i+val[j]]=max(f[i+val[j]],f[i]) 注意一下就是这里的取max是指从这k*2个数中选前k大的,彼…
题面 设$dp[i][j]$表示容量为$i$时的第$j$优解,因为是优解,肯定$dp[i][j]$是随着$j$增大不断递减的,这样的话对于一个新加进来的物品,它只可能从两个容量的转移的前$k$优解中转移过来,所以每次用两个指针扫一下转移过来就好了. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ,K=; int vol[N],val[N],tmp[K],dp[N][…
P1858 多人背包 题目描述 求01背包前k优解的价值和 要求装满 调试日志: 初始化没有赋给 dp[0] Solution 首先补充个知识点啊, 要求装满的背包需要初始赋 \(-inf\), 边界为 \(dp[0] = 0\) 第 \(k\) 优解的01背包 以 \(dp[j][k]\) 表示 容量为 \(j\) 的背包的第 \(k\) 优解 用到了归并排序的思想 对于第 \(i\) 个物品, 容量为 \(j\), 我们有两种选择: 选第 \(i\) 个物品 不选第 \(i\) 个物品 对于…
题目大意:求解 0-1 背包前 K 优解的和. 题解:首先,可知对于状态 \(dp[j]\) 来说,能够转移到该状态的只有 \(dp[j],dp[j-w[i]]\).对于 K 优解来说,只需对状态额外增加一个维度即可.接着,考虑状态转移的过程,即:需要从 \(dp[j][1...k]\rightarrow dp[j][1...k],dp[j-w[i]][1...k]\rightarrow dp[j][1...k]\),可以考虑每次取出两堆数中的最大值进行比较,取较大的给当前状态,时间复杂度较高.…
正解:数论+dp 解题报告: 传送门! 首先看到这题,跳无数次,自然而然可以想到之前考过好几次了的一个结论——如果只考虑无限放置i,它可以且仅可以跳到gcd(p,v[i]) 举一反三一下,如果有多个i,表示成a[i]好了,那就一定是能跳到gcd(p,v[a[1]],v[a[2]],..,v[a[n]]),因为这个太长了后面单一个gcd就指的它 挺显然的这儿不证明了QAQ 然后这儿就相当于是问有多少种a[i]的方案能满足gcd|gcd(p,w) 然后因为多组询问,显然考虑能不能预处理一个f[i]:…
正解:背包dp 解题报告: 昂先放链接qwq 感觉还挺妙的,,,真的我觉得我直接做可能是想不到背包的,,,我大概想不出是个背包的QAQ 但是知道是背包之后觉得,哦,好像长得也确实挺背包的吼,而且其实是个比较经典的样子 所以为什么想不到呢,,,大概就 基础不牢地动山摇趴QAQ(不其实就是菜而已 然后大概随便港下就成qwq 首先是很明显是个01背包咯,然后就思考怎么设状态怎么转移 直接f[i][j]表示决定了前i个挂饰并且有j个挂钩时的vmax 就转移,没什么可讲的鸭,就 不选 f[i-1][j]…
由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的食物准备填饱肚子.gw希望能在T时间内做出最美味的食物,但是这些食物美味程度的计算方式比较奇葩,于是绝望的gw只好求助于你了. 题目背景 [题目描述:] 一共有n件食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去ci的时间. 众所周知…
[题目描述:] 爱与愁大神后院里种了n棵樱花树,每棵都有美学值Ci.爱与愁大神在每天上学前都会来赏花.爱与愁大神可是生物学霸,他懂得如何欣赏樱花:一种樱花树看一遍过,一种樱花树最多看Ai遍,一种樱花树可以看无数遍.但是看每棵樱花树都有一定的时间Ti.爱与愁大神离去上学的时间只剩下一小会儿了.求解看哪几棵樱花树能使美学值最高且爱与愁大神能准时(或提早)去上学. [输入格式:] 共n+1行: 第1行:三个数:现在时间Ts(几点:几分),去上学的时间Te(几点:几分),爱与愁大神院子里有几棵樱花树n.…
P2083 找人 题目背景 无 题目描述 小明要到他的同学家玩,可他只知道他住在某一单元,却不知住在哪个房间.那个单元有N层(1,2……N),每层有M(1,2……M)个房间. 小明会从第一层的某个房间开始找,他找的方式也很特别,每次到了一个房间,如果不是他的同学,他就会询问这人, 然后他就会去那人告诉他的房间号,如果还不是,他就会继续按这个方法找下去,直到找到.当然,他也有可能找不到同学.他的体力也是有限的,他每爬一层楼梯就会消耗V体力值.你的任务就是求找到同学耗费的最少体力值,如果找不到,就输…
题目:https://www.luogu.org/problemnew/show/P1474 完全背包,注意方案计数的方法. 代码如下: #include<iostream> #include<cstdio> using namespace std; long long v,n,w[30],f[30005]; int main() { scanf("%lld%lld",&v,&n); for(int i=1;i<=v;i++) scanf(…
题目描述 Bessie像她的诸多姊妹一样,因为从Farmer John的草地吃了太多美味的草而长出了太多的赘肉.所以FJ将她置于一个及其严格的节食计划之中.她每天不能吃多过H ( <= H <= ,)公斤的干草. Bessie只能吃一整捆干草:当她开始吃一捆干草的之后就再也停不下来了.她有一个完整的N ( <= N <= )捆可以给她当作晚餐的干草的清单.她自然想要尽量吃到更多的干草.很自然地,每捆干草只能被吃一次(即使在列表中相同的重量可能出现2次,但是这表示的是两捆干草,其中每…
P2083 找人 题目背景 无 题目描述 小明要到他的同学家玩,可他只知道他住在某一单元,却不知住在哪个房间.那个单元有N层(1,2……N),每层有M(1,2……M)个房间. 小明会从第一层的某个房间开始找,他找的方式也很特别,每次到了一个房间,如果不是他的同学,他就会询问这人, 然后他就会去那人告诉他的房间号,如果还不是,他就会继续按这个方法找下去,直到找到.当然,他也有可能找不到同学.他的体力也是有限的,他每爬一层楼梯就会消耗V体力值.你的任务就是求找到同学耗费的最少体力值,如果找不到,就输…
\({\mathcal{For}}\) \({\mathcal{we}\ }\)\({\mathcal{live}\ }\)\({\mathcal{by}\ }\)\({\mathcal{faith}\ }\)\({\mathcal{,}\ }\)\({\mathcal{not}\ }\)\({\mathcal{by}\ }\)\({\mathcal{sight}\ }\)\({\mathcal{.}}\) Description N 种物品,有各自的价值 w 和代价 c: 一个背包,容量为 V…
题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<=D<=100)英尺. 卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了.另外,卡门可以通过吃一些垃圾来维持自己的生命. 每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间. 假设卡门预先知道了每个垃圾扔下的时间t(0< t<=1000),以及每个垃圾堆放的高度h(1<=h<=25)和吃进该垃圾能维持生命的时间f(…
题目描述 https://www.luogu.org/problemnew/show/P4553 题解 思路比较显然,把图建出来,一个国家拆成两个点,中间设置上下界,然后跑费用流. 我把源那边的流量也设置了上下界,但是题解没有,为什么我按照题解的建图方法会WA? 代码 #include<iostream> #include<cstdio> #include<cstring> #include<queue> #define N 209 #define inf…
嘟嘟嘟 既然让求前\(k\)优解,那么就多加一维,\(dp[j][k]\)表示体积为\(j\)的第\(k\)优解是啥(\(i\)一维已经优化掉了). 考虑原来的转移方程:dp[j] = max(dp[j], dp[j - c[i]] + v[i]). 现在多了一维,那么dp'[j][k]就分别从dp[j][]和dp[j - c[i]][]中取前\(k\)大的即可. #include<cstdio> #include<iostream> #include<cmath> #…
题目大意:定义$f(x)$表示$x$每一个数位(十进制)的数之和,求$\sum\limits_{i=l}^rf(i)$,多组询问. 题解:数位$DP$,可以求出每个数字的出现个数,再乘上每个数字的大小即可. 卡点:无(结构体记得写构造函数清空) C++ Code: #include <algorithm> #include <cstdio> #define maxn 20 const int mod = 1e9 + 7; inline void reduce(int &x)…
题目来源:洛谷P1541 思路 类似背包的题 总之就是四种卡牌取的先后顺序不同导致的最终ans不同 所以我们用一个四维数组每一维分别表示第几种取了几张的最大分数 然后就是简单DP解决 代码 #include<iostream> using namespace std; #define maxn 355 int n,m,ans; ],point[maxn]; ][][][]; int main() { cin>>n>>m; ;i<=n;i++) cin>>…
题目描述--->p1858 多人背包 分析: 很明显,这题是背包问题的一种变形. 求解 次优解or第k优解. 表示刚开始有点懵,看题解也看不太懂. 又中途去补看了一下背包九讲 然后感觉有些理解,但还是不算太清楚. 所以自己思考了一下.(应该算是大致理解了意思. 来分享一下思路. 题解里都说是裸的此类问题,并没有给出解释. (给出的解释也大多是背包九讲里的一些抽象定义 前置知识 首先根据01背包的递推式:(这里按照一维数组来讲) (v[i]代表物品i的体积,w[i]代表物品i的价值). \(f(j…
分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限制的话,肯定是贪心的选. 假设当前选择了一个解\(x_0\),却并不是\(\frac{\sum a}{\sum b}\)的最大值,我们有 \[\frac{\sum a}{\sum b}>x_0\] 进而 \[\sum a-bx_0>0\] 这时候我们要求的东西变成了\(a-bx_0\),每个元素的…
To 洛谷.1774 最接近神的人 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的遗产了.但现在的问题是如何打开这扇门…… 仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最容易接近神明的.而最聪明的人往往通过一种仪式选拔出来.仪式大概是指,即将隐退的智者为他的候选人写下一串无序的数字,并让他们进行一种操作,即交换序列中相邻的两个元…
题目传送门:洛谷 P4389. 题意简述: 有 \(n\) 个物品,每个物品都有无限多,第 \(i\) 个物品的体积为 \(v_i\)(\(v_i\le m\)). 问用这些物品恰好装满容量为 \(i\) 的背包的方案数,两个方案不同当且仅当存在某一个物品的选取数量不同. 你需要对 \(i\in [1,m]\) 回答,答案对 \(998,244,353\) 取模. 题解: 对于一个体积为 \(v\) 的物品,它装满容量为 \(x\) 的背包的方案数序列为 \(a_x=[v|x]\). 例如 \(…
[题目描述:] ... (宣传luogu2的内容被自动省略) 洛谷的运营组决定,如果...,那么他可以浪费掉kkksc03的一些时间的同时消耗掉kkksc03的一些金钱以满足自己的一个愿望. Kkksc03的时间和金钱是有限的,所以他很难满足所有同学的愿望.所以他想知道在自己的能力范围内,最多可以完成多少同学的愿望? [输入格式:] 第一行,n M T,表示一共有n(n<=100)个愿望,kkksc03 的手上还剩M(M<=200)元,他的暑假有T(T<=200)分钟时间. 第2~n+1…
[NOI导刊2010提高&洛谷P1774]最接近神的人 Description 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着"神的殿堂".小FF猜想里面应该就有王室的遗产了.但现在的问题是如何打开这扇门-- 仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最容易接近神明的.而最聪明的人往往通过一种仪式选拔出来.仪式大概是指,即将隐退的智者为他的候选人写下一串无序的…
洛谷 P2015 二叉苹果树 (树上背包) 一道树形DP,本来因为是二叉,其实不需要用树上背包来干(其实即使是多叉也可以多叉转二叉),但是最近都刷树上背包的题,所以用了树上背包. 首先,定义状态\(dp[x][i]\)表示在节点\(x\)保留\(i\)个边所获得的最大苹果数,定义状态时一定要选对状态并且定义清晰(状态中包括了当前节点吗?目标状态是怎样的?).一开始我就是因为状态定义错误,所以卡了半天,之后重新定义状态后几分钟就切了这道题. 然后是普通的树上背包状态转移 \[ dp[x][i]=m…
洛谷 P2014 选课(树形背包) 思路 题面:洛谷 P2014 如题这种有依赖性的任务可以用一棵树表示,因为一个儿子要访问到就必须先访问到父亲.然后,本来本题所有树是森林(没有共同祖先),但是题中的节点\(0\)其实就可以当做一个LCA,从节点\(0\)开始dp. 状态定义:\(dp[x][m]\)x节点,选则m课,获得的最大学分 决策时,类比背包,遍历每一个状态,用儿子的状态更新 dp转移方程(已优化一维): \[ dp[x][i] = max{dp[x][i-j]+dp[son(x)][j…