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

P1064 [NOIP 2006 提高组] 金明的预算方案 题解

P1064 [NOIP 2006 提高组] 金明的预算方案 - 洛谷

参考P1064 [NOIP 2006 提高组] 金明的预算方案 - 洛谷

参考Anguei博主的解题思路,仅供自己做笔记自用

基本思路

既然物品分为主件和附件两类,且每个主件最多包含两个附件,那么我们不妨枚举所有的主件,对于每次枚举,会有5种情况:
1.什么都不买
2.只买主件
3.买主件和第一个附件
4.买主件和第二个附件
5.买主件和两个附件
只要把这5种情况最终的价值算出来,取最大值就可以了。

如何开数组?

建立两个二维数组 V65,3​ 和 P65,3​,含义如题目描述。Vi,j​ 和 Pi,j​ 分别表示第 i 个物品的第 j 个附件的价格和重要度(当 j=0 时,表示主件)。

如何预处理数组?

1.如果是主件,则Vi,0,Pi,0=_v,_p。
2.如果是物品 _q 的第 j 个附件,则令 Vq,j​,Pq,j​=_v,_p。

动态转移方程

代码简化

完整代码

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
#define ll long long
ll v[N][3],p[N][3],q[N];
ll f[N];
int main()
{int n,m;cin>>n>>m;for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;if(!c){v[i][0]=a;p[i][0]=b;}else{if(v[c][1]==0){v[c][1]=a;p[c][1]=b;}else{v[c][2]=a;p[c][2]=b;}}}for(int i=1;i<=m;i++){for(int j=n;j>=0;j--){auto cost2 = [v, p, i](int x, int y) { return v[i][x] + v[i][y]; };auto cost3=[v,p,i](int x,int y,int z) {return v[i][x]+v[i][y]+v[i][z]; };auto pr=[v,p,i](int x) { return v[i][x]*p[i][x]; };if(j>=v[i][0])f[j]=max(f[j],f[j-v[i][0]]+pr(0));if(j>=cost2(0,1))f[j]=max(f[j],f[j-cost2(0,1)]+pr(0)+pr(1));if(j>=cost2(0,2))f[j]=max(f[j],f[j-cost2(0,2)]+pr(0)+pr(2));if(j>=cost3(0,1,2))f[j]=max(f[j],f[j-cost3(0,1,2)]+pr(0)+pr(1)+pr(2));}}cout<<f[n]<<endl;return 0;
}

http://www.dtcms.com/a/299104.html

相关文章:

  • 主要分布在腹侧海马体(vHPC)CA1区域(vCA1)的混合调谐细胞(mixed-tuning cells)对NLP中的深层语义分析的积极影响和启示
  • LeetCode 刷题【15. 三数之和】
  • Ubuntu 18.04安装Fast-Lio2教程
  • 开发者说|RoboTransfer:几何一致视频世界模型,突破机器人操作泛化边界
  • Vue当中背景图无法占满屏幕的解决方法
  • JavaScript里的reduce
  • JavaScript 对象、字符串的统计和排序高频面试题
  • Spring Boot 3 如何整合 MinIO 实现分布式文件存储?
  • 【20】C# 窗体应用WinForm ——下拉列表框ComboBox属性、方法、实例应用
  • 掌握JavaScript函数封装与作用域
  • 【资讯】2025年软件行业发展趋势:AI驱动变革,云原生与安全成核心
  • C++/CLI与标准C++的语法差异(一)
  • 《jQuery Mobile 页面》
  • 统计学07:概率论基础
  • ICMPv6报文类型详解表
  • opencv学习(图像金字塔)
  • 算法第三十九天:动态规划part07(第九章)
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现沙滩小人检测识别(C#代码UI界面版)
  • Kafka MQ 消费者应用场景
  • 【C++】stack和queue的模拟实现
  • 【C++】定义常量
  • SpringBoot连接Sftp服务器实现文件上传/下载(亲测可用)
  • Java中List集合对象去重及按属性去重
  • 【Linux系统】理解硬件 | 引入文件系统
  • MySQL数据库本地迁移到云端完整教程
  • 部署上线你的项目
  • 【Git】实用Git操作指南:从入门到高效协作
  • 小米携手云轴科技ZStack获信通院可信云用户典型实践奖
  • 大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(2):LangChain + LlamaIndex 实现
  • Nanopct6SDK问题汇总与解决方案