WikiOI 3269 混合背包 (动规+多重背包优化)

洛谷P1833樱花 (混合背包)-二进制优化多重背包 j >= t[i];if (s[i] == 0) { //处理 完全背包 的状态转化。if (z == 1 || z == 0) {//此处处理01背包及完全背包。else { //此处将多重背包二进制优化成01背包。t,v,s分别为每颗樱花树的观看时间,美学值及可观看次数;二进制优化为7个01背包(1,2,4,8,16,32,37)观看次数0 阅读详情

3269 混合背包
时间限制: 1 s
空间限制: 256000 KB
题目等级 : 钻石 Diamond
题解
查看运行结果
题目描述 Description
背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 , 在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少?

输入描述 Input Description
第一行两个数N,V,下面N行每行三个数Vi,Wi,Mi表示每个物品的体积,价值与数量,Mi=1表示至多取一件,Mi>1表示至多取Mi件,Mi=-1表示数量无限

输出描述 Output Description
1个数Ans表示所装物品价值的最大值

样例输入 Sample Input
2 10
3 7 2
2 4 -1

样例输出 Sample Output
22

数据范围及提示 Data Size & Hint
对于100%的数据,V <= 200000 , N <= 200

题目很简单,但是数据很恐怖,第一次打妥妥的全tle,01背包和完全背包可以按照老方法写,多重背包用了一点点小优化(我也搞不太明白,但是背下来就好)。

24到39行

是最重要最有价值的部分!!!

program mys;
var i,j,k,m,n,kk:longint;
v,w,t:array[0..500]of longint;
f:array[0..500000]of int64;

begin 
readln(n,m);
for i:=1 to n do 
begin 
readln(v[i],w[i],t[i]);
if t[i]=1 then 
begin 
for j:=m downto v[i] do 
if f[j-v[i]]+w[i]>f[j] then 
f[j]:=f[j-v[i]]+w[i];
end;
if t[i]=-1 then     
begin 
for j:=v[i] to m do 
if f[j-v[i]]+w[i]>f[j] then 
f[j]:=f[j-v[i]]+w[i];
end;
if t[i]>1 then      //最重要的部分!!!
begin 
kk:=1;
while kk<=t[i] do      
begin 
for j:=m downto kk*v[i] do 
if f[j-kk*v[i]]+kk*w[i]>f[j] then 
f[j]:=f[j-kk*v[i]]+kk*w[i];
t[i]:=t[i]-kk;
kk:=kk*2;
end;
if t[i]>0 then 
for j:=m downto t[i]*v[i] do 
if f[j-t[i]*v[i]]+t[i]*w[i]>f[j] then 
f[j]:=f[j-t[i]*v[i]]+t[i]*w[i];
end;
end;
writeln(f[m]);
end.
解决背包问题:组合优化的应用与建模方法 组合优化是数学优化的一支,专注于从有限集合中选取元素的最优化问题。它涉及将一组对象组合在一起,以满足特定条件并优化某个目标函数,即在所有可能的组合中找到最有利的一个。 本文将以一个简化的背包问题为例,来讲解采用数学规划的方法来解决背包这个组合优化问题。 阅读详情

相关推荐

【原创】SAP/Oracle 集团企业海外全球化实施注意事项: 一带一路本地化 (持续更新)...

ABC集团SAP的系统平台已经扩展到全球一百来个国家和地区,SAP系统平台的全球实施项目中, 当时是需要支持当地的业务和法律法规的合规要求。   当时客户也是缺乏当地的资源以及对当地法律法规和业务实践的了解,需要团队提供了全球化的支持,通过我们全球产品技术专家充分传递了各区域的本地化支持和实践 而且近年来我们发现一些国家和政府,陆续都在推出一些新的税改和合规的要求,接下来基于这些要求,我们全球...

weixin_34024034的博客 1143

poj 3269 Building A New Barn

#include #include #include #include #include using namespace std; const int maxn=1e4+9; int x[maxn],y[maxn]; struct D { int x,y; bool operator <(const D &xx)const { if(x==xx.x

yrleep的专栏 1235

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2931

POJ 3269 Building A New Barn

题意: 已知 N 头牛的位置,问牛舍建在哪里,牛到牛舍的距离和最小以及可以取到最小值点的个数。 分析: 此题关键点:没有两个放牧点是相邻的 曼哈顿距离公式:d=|x1−x2|+|y1−y2|,由于两点曼哈顿距离的特性,单独求 x 与单独求 y 互不影响 因此,题目即为求 |x−x1|+|x−x2|+…+|x−xn| 的最小值,求 |y−y1|+|y−y2|+…+|y−yn| 的最小值...

qq_36552817的博客 894

免费搞定DWG转DXF:ODA File Converter保姆级配置指南(附常见报错解决)

本文详细介绍了如何使用ODA File Converter免费工具实现DWG到DXF的格式转换,包括环境配置、命令行参数解析、编程集成方案及常见问题解决。特别针对网络访问异常、参数配置等实际痛点提供应对策略,帮助用户高效完成工程设计文件的格式转换。

weixin_29291185的博客 5996

实用工具系列 - Xshell安装下载与使用

一、介绍 二、下载 三、安装 四、使用

Passerby_Wang的博客 1万+

背包问题(5):混合背包

混合背包就是将前面三种基本的背包问题叠加成较复杂的问题。也就是说,有的物品只可以取一次(0/1背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。 0/1背包与完全背包的混合比较简单。如果只有两类物品:一类物品只能取一次,另一类物品可以取无限次,那么只需在对每个物品应用转移方程时,根据物品的类别选用逆序(0/1背包)或顺序(完全背包)的循环即可。 一般可以编写如下的循环。​ for (i=1;i<=N;i++) ...

cmdos的专栏 2778

C#联合Halcon机器视觉框架源码

本软件参考EV开发,共用模块,基于WPF+Halcon,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。

Z's Palace 4823

洛谷P1833 樱花(混合背包)

传送门 难度 https://www.luogu.com.cn/problem/P1833 普及/提高- 这是一道混合背包板子题。使用二进制对数量有限且不为1的物品进行分割,化归为数量为1的物品。然后依据物品数为1或无限,分别按照0/1背包、完全背包进行处理。0/1背包、完全背包具体步骤不再赘述。 AC代码 #include<iostream> #include&l...

空空的池子 465

S/4HANA Private Cloud 与 On-Premise 的 Key User Custom Fields 运输与升级避坑指南

本文探讨了SAP S/4HANA Cloud Private Edition和On-Premise系统中Key User Custom Fields的管理要点。文章指出,Custom Fields涉及元数据生成、对象一致性、传输治理等完整链路,操作不当会导致字段丢失或升级失败。关键建议包括:使用ATO Fiori App管理扩展项与传输绑定,配置正确的job user权限,避免在多系统并行开发同一字段。特别强调升级时需执行CFD_REGENERATE_IN_ONPREMISE报表,并通过标准传输机制推进变更

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

SOC估算方法之(OCV-SOC+安时积分法)

此方法主要参考。

m0_61973119的博客 933

c++混合背包问题(多重背包二进制优化)

混合背包问题是指在一个背包中可以装入多种不同的物品,每种物品有自己的重量和价值,同时每种物品又有固定的数量限制。表示物品的数量限制。如果该物品数量无限,则将该物品视为完全背包问题,按照完全背包的方式添加重量和价值。如果该物品数量为1,则将该物品视为01背包问题,添加一次该物品的重量和价值即可。最终,将所有物品按照上述方式进行转换并加入背包中,即可得到混合背包问题的最优解。如果该物品数量有限,则将该物品视为多次背包问题,采用一般化方法进行计算。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。

2301_76180325的博客 805

【ArcGIS微课1000例】0118:一文讲清楚tif(geotiff)栅格数据格式

TIFF(Tagged Image File Format)是一种常见的图像文件格式,它被广泛用于存储和传输各种类型的图像数据。图像存储:TIFF格式可以存储多通道的位图图像,包括灰度图、彩色图和透明度图等。它支持不同的像素深度,可以是8位、16位、24位或32位等。因此,TIFF格式非常适合存储高质量的图像数据,包括照片、卫星图像、医学影像等。无损压缩:TIFF格式支持无损压缩,这意味着图像可以被压缩而无需损失任何像素信息。这种压缩方式可以减小文件大小,而不会降低图像的质量。

智慧空间实验室 2818

背包问题代码集及优化(01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包)

背包问题代码集及优化(01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包)

2301_79227549的博客 269

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洛谷 飞扬的小鸟(混合背包,细节)

题目链接: [NOIP2014 提高组] 飞扬的小鸟 - 洛谷 思路: 表示到达(i, j)点最少需要的跳跃次数。每个 f 值根据上一个对应位置,加上这一次的跳跃/下降得到。 计算完所有 f 值之后,倒序遍历,找出跳过的柱子数,以及最短跳跃次数即可。 需要注意几个点: 可以跳多次,所以非第一次跳的地方用到了完全背包。(注意:也正是因为这个,排除越界情况必须写在逻辑的最后面,因为第一次跳即使不在有效范围内也要算上,这样才能用完全背包)。 最高跳到m高度,所以对m高度做了一个特判。 代码.

bunny_1024的博客 445

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

POJ 3269 中位数

题意: 思路: 这道题坑也不少。。 你准备好脑洞了么? 首先 要认真审题 题目中有说:“没有两头牛的吃草位置是相邻的” 这句话让我们省了很多的事儿 (Discuss里有的大神就入了这个坑了) 然后呢 自然想到了中位数 (不要问我怎么想到的) 但是如果n为偶数怎么办呢 就取两个中间位置的数那段区间呗~ 本以为随便搞搞 ...

weixin_34406061的博客 344

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

混合背包(动态规划)

Description 背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 , 在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少? Input 第一行两个数V,N下面N行每行三个数Vi,Wi,Mi表示每个物品的体积,价值与数量,Mi=1表示至多取一件,Mi>1表示至多取Mi件,Mi=0表

chrisblogtk的博客 410

Codevs_P3269 混合背包

题目描述 Description 背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 , 在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少?输入描述 Input Description 第一行两个数N,V,下面N行每行三个数Vi,Wi,Mi表示每个物品的体积,价值与数量,Mi=1表示至多取一

BeiYu 541

混合背包

【题目描述】 背包体积为V,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1),要么数量无限,询问在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少。 【输入描述】 第一行两个数N、V; 下面N行每行三个数Vi、Wi、Mi,表示每个物品的体积、价值与数量,Mi=1表示至多取一件

【不轉太殺陵】 454

混合背包问题(01+完全+多重背包二进制优化)

题目传送门 题意:给n件物品和一个容积为V的背包,有些物品只可以拿一次,有些物品可以无限拿,有些物品可拿规定的次数,问你在背包容量内,可获得最大的价值是多少。 思路:把不同的物品种类分开处理即可。注意多重背包应该使用二进制优化与01背包视为同类处理,否则TLE #include<bits/stdc++.h> using namespace std; typedef long long ...

Joker_He的博客 418

洛谷P1833 混合背包问题

当可以看的次数乘以时间大于总时间时完全背包问题用  题目所在 #include&lt;iostream&gt; #include&lt;cstdio&gt; using namespace std; int t[10005],c[10005],p[10005],dp[10005]; int main() { int t1,t2,m1,m2,i,j,n,tt,k; scanf("%d:%d...

唐大帅 507

混合背包+多重背包的二进制优化

#include #include #include #include #include #define LL long long using namespace std; const int maxn = 200000+10; const int maxc = 1e9+7; LL f[maxn]; int v[210],w[210],m[210]; int n,V; void ZeroO

mzer&&oier 861

01背包 完全背包 多重背包 混合背包 学习总结

01背包 完全背包:#include&lt;bits/stdc++.h&gt; using namespace std; int dp[34005],w[3405],v[3405]; int main() { int i,j,n,m; while(~scanf("%d%d",&amp;n,&amp;m)) { for(i=1; i&lt;=n; i++) scanf...

qq_41668093的博客 289

POJ 3269 USACO FEB GOLD newbarn

题目大意 给N(1 我语文不好= - =连接:http://poj.org/problem?id=3270 我果然还是若菜呢。很难过吧,自己还是半吊子水平,这种题目都想不出来! 首先,因为是曼哈顿距离,所以X,Y轴可以分开来算, 然后,这道题稍微算一下就能发现,对于x y轴 从该行/列到其他的点的x距离(或y距离)是一个单谷函数...反正就是类似于二次函数的那种图像啦(>﹏<) 所以很明

Trigon 632
上一篇: 破解石碑 (动态规划)
下一篇: Tyvj 1363 火车进出栈问题 (高精度+卡特兰数+组合数学)
CodeOnce
博客等级 码龄10年 3粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值