P1776 宝物筛选

week12-复习(多重背包,模拟) 阅读详情

题目描述

终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。

这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。

小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为 W 的采集车,洞穴里总共有 n 种宝物,每种宝物的价值为 vi​,重量为 wi​,每种宝物有 mi​ 件。小 FF 希望在采集车不超载的前提下,选择一些宝物装进采集车,使得它们的价值和最大。

输入格式

第一行为两个整数 n 和 W,分别表示宝物种数和采集车的最大载重。

接下来 n 行每行三个整数 vi​,wi​,mi​。

输出格式

输出仅一个整数,表示在采集车不超载的情况下收集的宝物的最大价值。

输入输出样例

输入 #1

4 20
3 9 3
5 9 1
9 4 2
8 1 3

输出 #1

47

对于 30% 的数据,n≤∑mi​≤10^4,0≤W≤10^3。

对于 100% 的数据,n≤∑mi​≤10^5,0≤W≤4×10^4,1≤n≤100。

第一眼看到这个多重背包,肯定是多少个就复制多少个放到数组里,然后普通01背包,可是你仔细观察数据范围你会发现根本过不了,这时候我们就可以用二进制来解决

二进制每一个位置代表的含义: 1, 2, 4, 8 , 16, 32, 64, 128...

如果我们拥有一个X位的二进制,你会发现它可以表示到0 ~ 2^X-1

所以我们就可以使用二进制分组,对它要求的mi个数进行分组就算分组他也能表示0~mi之间的数

代码:

#include <bits/stdc++.h>
using namespace std;
long long dp[100005],v[100500],w[100005],cnt = 0;
int main(){
    int t,n;
    cin >> n >> t;
    for (int i = 1; i <=n; i++){
        int vv,ww,z;
        cin >> ww >> vv >> z;
        int s = 1;
        while (z != 0){
            if (z < s){
                v[++cnt] = z*vv;
                w[cnt] = z*ww;
                break;
            }
            v[++cnt] = s*vv;
             w[cnt] = s*ww;
            z-=s;
            s*=2;
        }
    }
    for (int i = 1; i <= cnt; i++){
        for (int j = t; j >= v[i]; j--){
            dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
        }
    }
    cout << dp[t];
    return 0;
}

洛谷—P1776 宝物筛选题解 题目链接:P1776 宝物筛选 题解思路: 多重背包模板。将第i种物品分成若干件物品,其中每件物品有一个系数,这件物品的费用和价值均是原来的费用和价值乘以这个系数。例如,如果p[i]为13,就将这种物品分成系数分别为1 , 2 , 4 , 6 的四件物品,则这四件物品的费用为kw[i]、价值为kv[i]。(k是物品的数目,而w[i]和v[i]分别为费用和价值)。这样我们就把一件物品拆分为多个物品,然后我们可以使用01背包求解,因为现在每个物品只有1件。 代码: #include<iostream&gt 阅读详情

相关推荐

【单调队列 多重背包】P1776 宝物筛选|普及+

终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。 这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。 小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为 $W$ 的采集车,洞穴里总共有 $n$ 种宝物,每种宝物的价值为 $v_i$,重量为 $w_i$,每种宝物有 $m_i$ 件。

闻缺陷则喜何志丹 743

宝物筛选(洛谷)

题目描述 终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物,这下小 FF 可发财了,嘎嘎。 但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。 小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。 他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作: 小 FF 有一个最大载重为 W 的采集车,洞穴里总共有 n 种宝物,每种宝物的价值为 vi,重量为 wi,每种宝物有 mi 件。 小 FF 希望

六级不考550+不改名 929

OpencvSharp学习笔记(一):图片的打开,保存灰度化,保存

近来萌生了学习OpenCv的想法,经过度娘得知老夫会的C#不能直接用OpenCv,只能用他的儿子OpenCvSharp与EmguCV,奈何奈何,这两玩意的资料少的出奇,只能慢慢的摸索了,EmguCV先不说,老夫找到了牛批的资料,先摸索OpencvSharp吧 首先打开VS通过Nuget安装 选择版本后点击安装就OK了. 安装完成后,引用里面就有以下的玩意儿了… 废话不多说了,在写程序前先 using OpenCvSharp 图片打开,灰度化,保存代码如下: static void Main(strin

猥琐de专注 7188

【题解】 【宝物筛选】(NOI导刊2010提高T2)DP背包 二进制拆分

题目来源:洛谷 题目描述 终于,破解了千年的难题。小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎。但是这里的宝物实在是太多了,小FF的采集车似乎装不下那么多宝物。看来小FF只能含泪舍弃其中的一部分宝物了……小FF对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小FF有一个最大载重为W的采集车,洞穴里...

cjx的博客 378

GPU运维面试题

【代码】GPU运维面试题。

u011220233的博客 700

【四季发财中线】通达信炒股指标副图指标使用图文教程,短线紫色柱线操作,与中线短柱线共振抓牛股妖股主升浪

如上图标记位置,对应的是副图指标的紫色柱线开始的位置,这个紫色柱线信号开始出现,也是短线进场做多的信号,紫色柱线的持续出现和加长,可以持股待涨,或行情继续上涨的可以在分时行情中逢低进场短线顺势做多。如上图标记部分,指标的主要部分信号,三行柱线-ZR-ZC -ZM,当出现这三行信号时,中线或波段看多做多,信号持续则中线顺势做多和持股待涨。不论是跟踪信号的出现先后进场和持股,或是在中线多头的行情中,找到短线转多信号进场做安全的短线操作机会,都是非常好的指标信号和辅助操作功能。

weixin_69760830的博客 1604

9748 宝物筛选--[中等]

9748 宝物筛选--[中等]

署髫 591

基于单片机红外线遥控Proteus仿真电路发射接收

*单片机设计介绍,基于单片机红外线遥控Proteus仿真电路发射接收。

2201_75940997的博客 3943

洛谷 p1776 宝物筛选(多重背包二进制优化--模板)2021-08-12

题目描述 终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。 这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。 小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF有一个最大载重为 W 的采集车,洞穴里总共有 n 种宝物,每种宝物的价值为 vi,重量为 wi,每种宝物有 mi件。小 FF 希望在采集车.

Jacob0824的博客 469

VBA中如何使用Edge内核Browser?

在微软宣布停止对IE的支持后,许多使用VBA中Web Browser的用户遇到了困境,因为Web Browser使用的IE内核。然而微软并没有给出支持Edge的新版Web Browser,网上许多第三方的库也不够完善。经过调研,libEdge可以较好的和VBA集成,实现在Excel中打开Browser,甚至能够通过执行js代码,获取web页面的信息。项目需要WebView2Loader.dll和LibEdge.dll两个库,区分x86和x64版本。

金木AI 2401

SPEI计算避坑指南:gma中Distribution和FitMethod参数怎么选?

本文深入探讨了在SPEI计算中如何科学选择gma库中的Distribution和FitMethod参数,帮助研究者避开常见陷阱。详细分析了LogLogistic、Gamma和Pearson3三种分布的适用场景,以及LMoment与MLE拟合方法的优缺点,为气象干旱研究提供实用指南。

weixin_30308101的博客 254

【C++真题】P1776 宝物筛选

终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为W的采集车,洞穴里总共有n种宝物,每种宝物的价值为vi​,重量为wi​,每种宝物有mi​件。

Ω 1106

电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)

电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)

天天酷科研的博客 3191

P1776宝物筛选

终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为W的采集车,洞穴里总共有n种宝物,每种宝物的价值为vi​,重量为wi​,每种宝物有mi​件。

2301_81408052的博客 1423

用 CL_SALV_TREE 把层级数据做成一棵会呼吸的 ABAP ALV 树:从类继承扫描到事件交互的完整拆解

本文介绍了SAP ABAP中使用CL_SALV_TREE实现树形ALV报表的方法。该技术将层级数据(如类继承关系)以可展开/折叠的树形结构展示,解决了传统ALV Grid无法直观显示层次结构的问题。核心实现采用"数据表+层级表"分离的设计模式:数据表存储节点业务信息,层级表维护父子关系。通过add_node方法动态构建树形结构,支持设置节点文本、图标和事件。文中提供了完整示例代码,演示了如何递归扫描ABAP类继承关系并构建树形ALV,这种技术特别适用于展示类族谱、权限树等层级数据,能显著

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 207

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

(单调队列优化)洛谷 P1776 宝物筛选 题解

小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为。为了避免出现买东西出现余数剩余,使所设状态成为“恰好”,我们可以考虑对余数分组:对相同余数开一个单调队列,将重量。小 FF 希望在采集车不超载的前提下,选择一些宝物装进采集车,使得它们的价值和最大。,我们发现买东西重量增加同时价值单调增,于是可以考虑使用单调队列优化 dp,把枚举。种宝物,每种宝物的价值为。的采集车,洞穴里总共有。,能使价值最大的重量下标。

m0_60506105的博客 866

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

P1776 宝物筛选-多重背包问题

终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为W的采集车,洞穴里总共有n种宝物,每种宝物的价值为vi​,重量为wi​,每种宝物有mi​件。

qq_74248245的博客 427

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

洛谷 - P1776 宝物筛选

题目描述 P1776 宝物筛选 解法:多重背包 #include <bits/stdc++.h> using namespace std; int main() { int n, m, ans, cnt = 1; scanf("%d%d", &n, &m); int dp[1000005], vvol[1000005], vval[1000...

Aries_young的博客 489

C\C++洛谷P1776宝物筛选

宝物筛选(混合背包) 前言:请读者在已知01背包、完全背包的推导过程,且有一定的DP基础的前提下,再来阅读本文,效果更佳。 题意: 小FF找到了N件宝物,每一件都有它的价值、重量、数量,小FF当然想全部拿走,但它有一个拉跨的 手推车,只能承受M的重量。求在重量不超过M的前提下,拿到的宝物价值最大!!! 输入: 第一行为N、M,接下来的N行为每一件宝物的价值、重量、数量。 输出: 最大价值!!! 思路: 大家应该都能看出来是一个混合背包:即集01背包、完全背包、多重背包于一身的杂交体,这类问题我们的普

weixin_45540506的博客 675

(多重背包)洛谷P1776宝物筛选

P1776宝物筛选 思路: 多重背包的模板题。 代码: #include<bits/stdc++.h> const int N=1e5+10; const int mod=1e7+9; const int maxn=0x3f3f3f3f; const int minn=0xc0c0c0c0; const int inf=99999999; using namespace std; in...

Z7784562的博客 291

P1776 宝物筛选 题解复盘

模块:动态规划类型:多重背包目标:在有限容量内选择宝物,使总价值最大。

2604_96548757的博客 224

P1776 宝物筛选 题解

博客园同步 原题链接 简要题意:多重背包模板。 即给定 nnn 个物品和一个容积为 VVV 的背包,每件物品有价值 viv_ivi​,重量 wiw_iwi​ 和个数 gig_igi​. 求最大价值。 n≤105n \leq 10^5n≤105. 如果你学过 背包九讲算法 ,这里就显得比板子还要板子了吧! 如果您没有学过,可以去我的博客搜索一下,学习完了。 时间复杂度:O(nlog⁡gi)\mathcal{O}(n \log g_i)O(nloggi​).(这里给出二进制拆分的做法) 实际得分:100pts1

bifanwen的博客 264

洛谷 P1776 宝物筛选 题解 多重背包

经典多重背包 二进制优化 动态规划 洛谷题解 C++代码 附详细注释

一只摸鱼的bbc 1149

洛谷P1776 宝物筛选

终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为W的采集车,洞穴里总共有n种宝物,每种宝物的价值为vi​,重量为wi​,每种宝物有mi​件。

Tmicen的博客 1224
上一篇: bfs广度优先搜索
下一篇: 全源最短路(Johnson)
B757-300
博客等级 码龄4年 259粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值