CodeVS 1155 金明的预算方案 题解

【题解】 金明的预算方案 (NOIP 2006 提高组 第二题) 题目来源:洛谷 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具... 阅读详情

分组背包问题

时间复杂度:O(M*N/10)

空间复杂度:O(N/10)

 

#include <cstdio>
#include <memory.h>
using namespace std;

int N, M;
int v, p, q;
int tmp, Sum, Max;

struct THING{
	bool Main;
	short int num;
	int Sum[4];
	int V[4];
}thing[60+2];

int f[3200+2];

int main() {
	scanf("%d %d", &N, &M);
	for(int i = 1; i<=M; ++i){
		scanf("%d %d %d", &v, &p, &q);
		Sum = v*p;
		v /= 10;
		if(q==0){
			thing[i].Main = true;
			for(int j = 0; j<4; ++j) thing[i].Sum[j] += Sum;
			for(int j = 0; j<4; ++j) thing[i].V[j] += v;
		}
		else{
			tmp = ++thing[q].num;
			thing[q].Sum[tmp] += Sum; thing[q].Sum[3] += Sum;
			thing[q].V[tmp] += v; thing[q].V[3] += v;
		}
	}

	for(int i = 1; i<=M; ++i){
		if(!thing[i].Main) continue;
		for(int j = N/10; j>=1; --j){
			Max = f[j];
			for(int k = 0; k<4; ++k){
				tmp = j-thing[i].V[k];
				if(tmp<0) continue;
				if((f[tmp]+thing[i].Sum[k])>Max) Max = f[tmp]+thing[i].Sum[k];
			}
			f[j] = Max;
		}
	}	
	
	printf("%d\n", f[N/10]);
    	return 0;
}	return 0;
}


 

 

 

金明的预算方案 —— 题解 Description   金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 N 元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:     主件  |  附件     --------... 阅读详情

相关推荐

积分java源码-FTC11515_RoverRuckus:FTC11515_RoverRuckus

积分java源码欢迎! 此 GitHub 存储库包含用于构建 Android 应用程序以控制FIRST Tech Challenge 竞赛机器人的源代码。 要使用此 SDK,请将整个项目下载/克隆到本地计算机。 如果您不熟悉 FIRST Tech Challenge 软件和控制系统,您应该访问在线 wiki 以了解如何安装、配置和使用软件和控制系统: 请注意,维基是一个不断更新和编辑的“常青”文档。 它包含有关FIRST Tech Challenge 软件和控制系统的最新信息。 下载项目 需要注意的是,此存储库很大,下载可能需要很长时间并占用大量空间。 如果您想节省时间和空间,您可以选择仅下载最新版本的 Android 项目文件夹的一些选项: 如果您是 git 用户, FIRST建议您使用 --depth 命令行参数仅克隆存储库的最新版本: git clone --depth=1 或者,如果您愿意,可以使用主存储库页面提供的“下载 Zip”按钮。 将项目下载为 .ZIP 文件将使下载的大小易于管理。 您还可以从此存储库的“发布”页面的“下载”小节下载项目文件夹(作为 .zip 或 .t

**leetcode刷题_(DP,backtraking)_code1155(掷骰子)

CODE1155:Number of Dice Rolls With Target Sum You have d dice, and each die has f faces numbered 1, 2, …, f. Return the number of possible ways (out of fd total ways) modulo 10^9 + 7 to roll the dice ...

weixin_39238424的博客 2298

python数据分析与可视化

Python数据分析主要包括数据清洗、数据探索和数据可视化三个部分。数据清洗是数据分析的重要环节,主要是对数据进行预处理,包括缺失值处理、异常值处理、数据类型转换等。数据探索则是通过对数据进行初步分析,了解数据的分布和特征,为后续的数据分析提供基础。数据可视化则是将数据以图形化的方式呈现,帮助人们更好地理解和分析数据。

2301_82032652的博客 7712

mysql Error Code:1175异常解决方法

如果你要批量更新或删除数据,一般会报 'Error Code: 1175 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column' 错误,因为是MySQL Workbench的默认的安全设置是不能批量更新表的。当要执行的SQL语句是进行批量更新或者删除的时候就会提示这个错误。

牧魂的博客 3059

Elsevier期刊LaTeX双栏模板(cas-dc)实战:从Overleaf配置到投稿全流程

本文详细介绍了Elsevier期刊LaTeX双栏模板(cas-dc)在Overleaf平台上的配置与使用全流程,包括模板结构解析、标题与作者信息规范、摘要与关键词特殊格式、正文写作技巧、参考文献管理以及投稿前检查清单。特别针对Elsevier期刊投稿需求,提供了从模板安装到最终投稿的实用指南,帮助研究者高效完成论文排版工作。

weixin_28455801的博客 1323

避坑指南:SAP成本中心分割结构配置常见错误及解决(含KA06/KL01前置步骤)

本文深入解析了SAP成本中心会计中分割结构配置的关键步骤与常见错误。重点强调了配置前必须通过KA06创建次级成本要素(类别42)和通过KL01创建活动类型这两个核心前置步骤,并详细剖析了在OKES中定义分割规则及版本时的高频报错原因与解决方案,帮助顾问和运维人员有效规避配置陷阱,确保成本分摊的准确性。

pear55的博客 865

P1064 [NOIP2006 提高组] 金明的预算方案——解题报告

2.由于题目中构成主从依赖关系,如果不选择主物品,那么附属物品也不能选择。所以相当于我们选择物品的时候是一组一组进行的。状态转移的时候便可以分组转移了,这便是一个典型的分组背包问题。给定总钱数n,和可供选择的m个物品,物品之间构成主从关系,如果要买附属品,则必须购买他的前置物品,也就是主物品。1.很显然这是一个背包问题的变种,所以方法在第一时间就确定下来了,我们采用DP的方式来完成这道题。=0时,自己便是主物品。3.因为存在整组不选,或者选则一定选主物品,所以我们应当在转移和状态中体现这一点。...

风中的微尘的博客 569

MySQL表名大小写敏感问题终极解决:lower_case_table_names=1不生效的3个隐藏坑

本文深入剖析了MySQL表名大小写敏感问题中,设置lower_case_table_names=1参数不生效的三个核心原因。关键在于理解该参数只能在数据库初始化前设置,并需排查配置文件优先级与正确停止服务的顺序。文章提供了从Windows迁移到Linux的完整避坑指南与验证方法,帮助DBA和开发者彻底解决这一跨平台兼容性难题。

weixin_29229055的博客 391

【日常学习】【背包DP】codevs1155 金明的预算方案题解

题目来源:2006NOIPTG 题目描述 Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:

西家家 1104

Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈

Titans 是谷歌推出的新型神经网络架构,通过神经长期记忆模块突破 Transformer 在处理长序列数据时的瓶颈,支持并行计算,显著提升训练效率。

士多啤梨先生の博客 991

Unity 热更 之 【YooAsset 热更】几分钟快速了解 YooAsset [功能面板]、以及 [基础代码] 说明

Unity 的资源管理系统不断发展,以适应不同项目的需求和解决特定的问题。AssetBundle 和 Addressable Asset System 是 Unity 官方提供的资源管理解决方案,而 YooAsset 是第三方提供的资源管理系统。简化的API和易用性YooAsset 可能提供了更简单直观的 API,使得资源加载和管理更加容易。对于不熟悉 Addressable 或 AssetBundle 复杂配置的开发者来说,YooAsset 可能是一个更易于上手的选择。性能优化。

仙魁XAN 2955

codevs 1155 金明的预算方案——来自深夜的挫败- -

codevs 1155 金明的预算方案——来自深夜的挫败- - 没想到到了今天的最后时刻我还是没把这题做出来。最开始以为可能有3个附件,觉得自己枚举6种组合,代码太冗余了,就不想这么写。于是乎去写了一次错误的动态规划,原因是没有看清楚背包问题中,对于每个物品选或者不选的选择,它都会更次一次0-V的所有dp[i]. 后来忍不住喵一下题解,看到了所谓的组合背包,我就傻傻地把每种组合当作一种新的物品用新

I feel lost 537

基于树莓派4B与NCNN的YOLOv8高效部署实战:无GPU环境下的C++加速优化全流程指南**

本文详细介绍了在树莓派4B上基于NCNN框架部署YOLOv8目标检测模型的全流程。内容包括:从PyTorch模型导出NCNN格式文件、树莓派环境配置(OpenCV和NCNN编译)、C++实现代码解析(含模型加载、推理及后处理),以及实际部署测试结果。在树莓派4B上达到约2FPS,并提供INT8量化、多线程等优化建议。该方案为无GPU设备提供了轻量化目标检测的实用部署方案,适合边缘计算场景。

FJN110的博客 917

Codevs 1155 金明的预算方案

题目: http://codevs.cn/problem/1155/ 题解: 想要购买附件,必须购买主件。 由于某主见最多拥有两个附件,所以可以枚举情况,分组背包。 如主件 x 有附件 x1 , x2 ; 有 x, x+x1, x+x2, x+x1+x2 四种情况,这四种情况是互相排斥的,只能选择一种,符合分组背包要求; 预处理貌似有点复杂,求指导代码简洁化; 正解还可以用有依赖的背

Mercury的博客 406

如何在Ubuntu 22.04系统上安装CUDA 12.9

本文提供Ubuntu22.04系统上安装CUDA12.9的简明指南:1)确认已安装适配575驱动;2)清理旧版本后安装必需依赖库;3)通过deb包方式添加英伟达源并安装CUDA12.9工具包;4)配置环境变量;5)通过nvcc-V和nvidia-smi命令验证安装。文中包含常见问题解决方法及多显卡使用说明,全程约需10分钟完成安装。

2501_93651177的博客 1480

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案

[codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案 试题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是...

weixin_30525825的博客 132

数学建模模型总结

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

【codevs1155】金明的预算方案

开始我的想法是对于加了附件的物品当成新的做,结果发现好像并不行啊,会有重复计算的存在 所以直接01背包是不行了,然后我看到网上的题解,有两种方法,一种是分组背包(看起来处理好麻烦qwq),还有种是树形背包,正好没学过2333333,来愉快的学一下 这个题如果用树形背包来做的话,是把主件当成根节点,建一棵树,因此就避免了重复计算,但是如果只是这样会形成森林,因此我们把0作为所有主件的根节点 ...

weixin_30257433的博客 114

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

codevs 1155今明的预算方案(复习有依赖性的背包问题)

1155 金明的预算方案 【题目大意】买附件必须买主件。 在一定钱数内 求总价值最大。 【题解】有依赖性的背包问题。 【code】 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> u...

weixin_30617737的博客 94

【题解】金明的预算方案

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过。根据题意,如果要买归类为附件的物品,必须先买该附件所属的主件,对于每个主件及其附件,我们不难想到。(个人习惯,下同),而 01 背包的物品数则就是主件的个数(包含主件的附件),物品的价格。元的前提下,使每件物品的价格与重要度的乘积的总和最大。,除此之外,由于物品的重量不定(如,主件和主件加附件。请你帮助金明设计一个满足要求的购物单。

shimingxin1007的博客 1685

Leetcode 1155. 掷骰子的N种方法(DAY 42) ---- 动态规划学习期

原题题目 代码实现(首刷自解) int numRollsToTarget(int d, int f, int target){ int** dp = (int**)malloc(sizeof(int*) * (d+1)),i,j,k,temp,maxnumber = 0; for(i=1;i<=d;i++) { dp[i] = (int*)malloc(sizeof(int) * (target+1)); memset(dp[i],0,si

Love 6's Private Blog 417

[NOIP2006 提高组] 金明的预算方案解析

题目链接 题意 金明有n元钱,最多允许购买m件物品。物品分为两类:主件和附件。规定:每个主件有0、1或2个附件,每个附件只对应一个主件,附件没有自己的附件。给出每件物品的价格,重要度,和从属关系,求出所选物品的价格与重要度乘积最大值。 题目分析 这是一道有依赖的背包问题。 仅考虑一个主件和它的附件集合,可选的策略最多有以下五种: 不选 仅选主件 — 物品1 选主件+附件1 — 物品2 选主件+附件2 — 物品3 选主件+附件1+附加2 — 物品4 问题转化成了分组背包,每组中最多有4种物品,组内的物

C++ static类成员 297

P1064 [NOIP 2006 提高组] 金明的预算方案——依赖背包

本文分析了两个背包问题的解题方法。首先介绍了简化版"开心的金明"问题,通过将物品价值乘以重要度转化为标准01背包问题。然后重点讨论了强化版"金明的预算方案",该问题增加了主件与附件的依赖关系。文章详细阐述了变量存储、主附件判断、编号排序等处理步骤,并给出了四种可能的购买组合情况。最后提供了强化版问题的完整代码实现,采用依赖背包算法解决主附件组合问题,时间复杂度为O(n^2)。文末还推荐了类似题目供进一步练习。

2401_90042730的博客 833

Leetcode 1155. 掷骰子的N种方法 (经典背包)

class Solution { const int MOD = (int)1e9 + 7; public: int numRollsToTarget(int d, int f, int target) { vector<vector<int>> dp(d+1, vector<int>(target + 1)); dp[0][0] = 1; for (int i = 1; i <= d; i++) ...

wwxy1995的博客 372

LeetCode 1155. 掷骰子的N种方法 每日一题

LeetCode 1155. 掷骰子的N种方法 每日一题

lishifu_的博客 955

Leetcode 1155. 掷骰子的N种方法

Leetcode 1155. 掷骰子的N种方法 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, ..., f。 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和。 如果需要掷出的总点数为 target,请你计算出有多少种不同的组合情况(所有的组合情况总共有 f^d 种),模 10^9 + 7 后返回。 示例 1: 输入:d = 1, f = 6, target = 3 输出:1 示例 2: 输入:d = 2, f = 6, target = 7 输出:6 示

weixin_43891775的博客 340

Leetcode1155:掷骰子的N种方法

Leetcode1155:掷骰子的N种方法 题目: 这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k 。 给定三个整数 n , k 和 target ,返回可能的方式(从总共 kn 种方式中)滚动骰子的数量,使正面朝上的数字之和等于 target 。 答案可能很大,你需要对 109 + 7 取模 。 思路:分组背包 代码如下: class Solution { int mod = (int)1e9+7; public int numRoll

immortalize的博客 400
上一篇: CodeVS 1063 合并果子 题解
下一篇: CodeVS 1102 采药 题解
Coder.AN
博客等级 码龄9年 8粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值