当前位置: 首页 > news >正文

洛谷 P1833:樱花 ← 混合背包(01 + 完全 + 多重)


【题目来源】
https://www.luogu.com.cn/problem/P1833

【题目描述】
爱与愁大神后院里种了 n 棵樱花树,每棵都有美学值 Ci(0<Ci≤200)。爱与愁大神在每天上学前都会来赏花。爱与愁大神可是生物学霸,他懂得如何欣赏樱花:一种樱花树看一遍过,一种樱花树最多看 Fi(0≤Fi≤100)遍,一种樱花树可以看无数遍。但是看每棵樱花树都有一定的时间 Ti(0<Ti≤100)。爱与愁大神离去上学的时间只剩下一小会儿了。求解看哪几棵樱花树能使美学值最高且爱与愁大神能准时(或提早)去上学。

【输入格式】
共 n+1 行:
第 1 行:现在时间 Ts(几时:几分),去上学的时间 Te(几时:几分),爱与愁大神院子里有几棵樱花树 n。这里的 Ts,Te 格式为:hh:mm,其中 0≤hh≤23,0≤mm≤59,且 hh,mm,n 均为正整数。
第 2 行到第 n+1 行,每行三个正整数:看完第 i 棵树的耗费时间 Ti,第 i 棵树的美学值 Ci,看第 i 棵树的次数 Pi(Pi=0 表示无数次,Pi 是其他数字表示最多可看的次数 Pi)。​​​​​​​

【输出格式】
只有一个整数,表示最大美学值。​​​​​​​

【输入样例】
6:50 7:00 3
2 1 0
3 3 1
4 5 4​​​​​​​

【输出样例】
11​​​​​​​

【数据范围】
100% 数据:Te-Ts≤1000(即开始时间距离结束时间不超过 1000 分钟),n≤10000。保证Te,Ts 为同一天内的时间。
样例解释:赏第一棵樱花树一次,赏第三棵樱花树 2 次。

【算法分析】
● 核心逻辑:将 0/1 背包(数量 cnt=1)与多重背包(数量 cnt≥1)统一归为一类,通过二进制拆分转化为 0/1 背包,采用逆序遍历处理;将完全背包(数量 cnt=0)单独处理,采用正序遍历​​​​​​​。

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int N=1e3+5;
int f[N];int get_time() {int h,m;scanf("%d:%d",&h,&m);return h*60+m;
}int main() {//1.读入时间+樱花数量int st=get_time();int ed=get_time();int V=ed-st;int n;cin>>n;//2.二进制拆分处理多重背包for(int i=1; i<=n; i++) {int vol,val,cnt;cin>>vol>>val>>cnt;if(cnt==0) { //完全背包:正序for(int j=vol; j<=V; j++) {f[j]=max(f[j],f[j-vol]+val);}} else { //多重背包:二进制拆分int k=1;while(k<=cnt) {int v=vol*k;int w=val*k;for(int j=V; j>=v; j--) {f[j]=max(f[j],f[j-v]+w);}cnt-=k;k<<=1;}if(cnt>0) {for(int j=V; j>=vol*cnt; j--) {f[j]=max(f[j],f[j-vol*cnt]+val*cnt);}}}}cout<<f[V]<<endl;return 0;
}/*
in:
6:50 7:00 3
2 1 0
3 3 1
4 5 4out:
11
*/

 

 

【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/159526923
https://blog.csdn.net/hnjzsyjyj/article/details/126230183
https://blog.csdn.net/hnjzsyjyj/article/details/126190151
https://blog.csdn.net/hnjzsyjyj/article/details/126229598

http://www.jsqmd.com/news/544428/

相关文章:

  • Python依赖包安装报错?手把手教你搞定Microsoft Visual C++ 14.0缺失问题(附运行库下载)
  • 3分钟打造macOS级桌面体验:开源光标主题全攻略
  • Wan2.2-I2V-A14B算力利用率:WebUI/API双服务并发推理性能实测
  • 如何构建开源智能电池管理系统:SmartBMS完整技术指南
  • 聚焦消费卡流通新动向,百大购物卡回收规则明晰化 - 京回收小程序
  • 《数据结构》| 第十章 排序算法实战指南
  • 植发失败后的修复方式及相关参考 - 品牌测评鉴赏家
  • Pixel Mind Decoder 多模态情绪解码初探:从文本到潜在图像关联
  • 2026长沙心理咨询机构推荐指南 - 第三方测评
  • 阳光变财富,弘骏掌通以国企+AI打造光伏投资终极解决方案 - 博客万
  • 开源Outfit字体使用指南:9大核心特性与专业应用技巧
  • Unity 2021打包微信小游戏避坑指南:从版本选择到真机调试的10个常见问题解决
  • 2026年嘉兴市做得好的抖音矩阵源头厂家团队口碑分析,嘉兴市抖音矩阵源头厂家综合实力与口碑权威评选 - 品牌推荐师
  • 告别C盘爆炸!手把手教你将Dify+Docker数据盘迁移到D盘(附.ENV配置详解)
  • 如何通过FCEUX实现NES游戏高精度模拟?解锁经典游戏的数字化体验
  • 54. 螺旋矩阵
  • Clawdbot+Qwen3:32B惊艳展示:上传PDF秒变可对话知识库
  • 选GEO营销公司怕踩坑?正规的GEO优化服务商这样挑 - 麦麦唛
  • OpCore Simplify:零基础黑苹果配置的终极自动化解决方案
  • Windows 10下5分钟搞定环回适配器安装,轻松连接eNSP模拟器
  • 新手避坑指南:用DJI NAZA-LITE飞控组装F450无人机,从焊接电调到GPS校准的完整流程
  • TMSpeech:Windows端离线实时语音转文字工具的完整使用指南
  • 2026年四川管道疏通/管道检测厂家优选 全链条服务适配多复杂工况 - 深度智识库
  • MogFace人脸检测模型在Qt图形界面中的应用:开发跨平台人脸检测工具
  • 【标杆企业】极致纯净的艺术——解析沃特尔超纯水系统的核心工艺与性能指标 - 品牌推荐大师
  • 微信单向好友检测终极指南:如何一键找出并清理删除你的微信好友
  • Windows 11终极优化指南:5分钟让你的系统焕然一新
  • ollama vs TensorFlow:哪个更适合你的深度学习项目?(附性能对比测试)
  • PyTorch网络可视化避坑指南:Jupyter Notebook + TensorWatch完整配置流程(附常见错误解决)
  • UniHacker:Unity引擎功能探索的技术研究指南