洛谷P1060-开心的金明(01背包)

简介: 洛谷P1060-开心的金明(01背包)

题目描述:


金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1−5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。


设第jjj件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j1,j2,…,jkj,则所求的总和为:


v[j1]×w[j1]+v[j2]×w[j2]+…+v[jk]×w[jk]


请你帮助金明设计一个满足要求的购物单。


输入:


第一行,为2个正整数,用一个空格隔开:nm(其中N(<30000)表示总钱数,m(<25)为希望购买物品的个数。)


从第2行到第m+1行,第jjj行给出了编号为j−1的物品的基本数据,每行有2个非负整数vp(其中v表示该物品的价格(v≤10000),p表示该物品的重要度(1−5)


输出:


1个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(<100000000)。


样例输入:


1000 5


800 2


400 5


300 5


400 3


200 2


样例输出:


3900


程序代码:


#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 100001
int dp[N],w[N],v[N];
int main()
{
  memset(dp,0,sizeof(dp));//dp数组清零 
  int n,m;
  scanf("%d %d",&n,&m);
  for(int i=0;i<m;i++)
  {
    scanf("%d %d",&v[i],&w[i]);
    w[i]*=v[i];//物品的价格与重要度乘积 
  }
  for(int i=0;i<m;i++)
  {
    for(int j=n;j>=v[i];j--)
    {
      dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
    }
  }
  printf("%d\n",dp[n]);
  return 0;
}


相关文章
|
存储 C语言
建立简单的静态链表
建立简单的静态链表
297 0
【LeetCode-每日一题】-378. 有序矩阵中第K小的元素
【LeetCode-每日一题】-378. 有序矩阵中第K小的元素
|
7月前
|
存储 弹性计算 安全
阿里云老用户活动参考:建站套餐、爆款单品、CDN与安全等云产品特惠
阿里云推出老用户专属特惠活动,涵盖建站套餐、爆款单品、CDN安全、存储数据库及AI服务等六大板块。活动提供丰富的组合优惠与单品特惠,如轻量应用服务器低至28元/月,ECS上云套餐首年仅需184元起,云盾证书服务68元/年。此外,通义千问、万相等AI模型抵扣包及企业邮箱等产品同步让利。此次活动精准匹配从中小微建站到企业级扩容的多元需求,多维降低上云成本。
905 4
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
3683 10
|
编译器
重载 overload 和重写 overried 的区别
本内容介绍了面向对象编程中的“重载”与“重写”概念。重载指同一类中方法名相同但参数列表不同,由编译器在编译阶段根据参数选择方法;重写指父子类中方法名与参数列表均相同,由虚拟机在运行时根据对象实际类型确定调用哪个方法。内容还包含代码示例及重写的检查方式(如 @Override 注解),并强调了重写时访问修饰符、异常类型和返回值类型的规则。
344 4
|
关系型数据库 分布式数据库 数据库
开源云原生数据库PolarDB PostgreSQL 15兼容版本正式发布
PolarDB进行了深度的内核优化,从而实现以更低的成本提供商业数据库的性能。
|
XML Shell Linux
性能工具之 JMeter 使用 Python 脚本快速执行
性能工具之 JMeter 使用 Python 脚本快速执行
733 1
性能工具之 JMeter 使用 Python 脚本快速执行
|
存储 缓存 数据安全/隐私保护
DMA(Direct Memory Access):直接内存访问
DMA(Direct Memory Access)是一种允许外设直接与内存进行数据传输的技术,无需 CPU 干预。它通过减轻 CPU 负担、提高数据传输效率来提升系统性能。DMA 的工作模式包括直接模式和 FIFO 模式,数据传输方式有单字传送和块传送,寻址模式有增量寻址和非增量寻址。通过缓存一致性协议、同步机制、数据校验和合理的内存管理,DMA 确保了数据在内存中的一致性和完整性。
|
网络协议 网络安全 数据库
|
存储 C语言 索引
在C语言中静态链表
在C语言中静态链表
270 1