AcWing算法提高课-1.3.14开心的金明

这篇具有很好参考价值的文章主要介绍了AcWing算法提高课-1.3.14开心的金明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

宣传一下算法提高课整理 <—

CSDN个人主页:更好的阅读体验 <—

AcWing算法提高课-1.3.14开心的金明

本题链接(AcWing) 点这里

题目描述

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。

更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 N N N 元钱就行”。

今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的 N N N 元。

于是,他把每件物品规定了一个重要度,分为 5 5 5 等:用整数 1 ∼ 5 1 \sim 5 15 表示,第 5 5 5 等最重要。

他还从因特网上查到了每件物品的价格(都是整数元)。

他希望在不超过 N N N 元(可以等于 N N N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。

设第 j j j 件物品的价格为 v [ j ] v[j] v[j],重要度为 w [ j ] w[j] w[j],共选中了 k k k 件物品,编号依次为 j 1 , j 2 , … , j k j_1,j_2,…,j_k j1j2jk,则所求的总和为:

v [ j 1 ] × w [ j 1 ] + v [ j 2 ] × w [ j 2 ] + … + v [ j k ] × w [ j k ] v[j_1] \times w[j_1]+v[j_2] \times w[j_2]+…+v[j_k] \times w[j_k] v[j1]×w[j1]+v[j2]×w[j2]++v[jk]×w[jk]

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

输入格式

输入文件的第 1 1 1 行,为两个正整数 N N N m m m,用一个空格隔开。(其中 N N N 表示总钱数, m m m 为希望购买物品的个数)

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

输出格式

输出文件只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(数据保证结果不超过 1 0 8 10^8 108)。

数据范围

1 ≤ N < 30000 1 \le N < 30000 1N<30000,
1 ≤ m < 25 1 \le m < 25 1m<25,
0 ≤ v ≤ 10000 0 \le v \le 10000 0v10000,
1 ≤ p ≤ 5 1 \le p \le 5 1p5

输入样例:
1000 5
800 2
400 5
300 5
400 3
200 2
输出样例:
3900

思路

其实就是 01背包问题 。
详见注释。


AC Code:

C + + C++ C++

#include <iostream>

using namespace std;

const int N = 30010;

int n, m;
int f[N];

int main()
{
    cin >> n >> m;
    
    for (int i = 1; i <= m; i ++ )
    {
        int v, p;
        cin >> v >> p;
        for (int j = n; j >= v; j -- )
            f[j] = max(f[j], f[j - v] + v * p); // 01背包问题,把价值定为 v * p
    }
    
    cout << f[n] << endl;
    
    return 0;
}

AcWing算法提高课-1.3.14开心的金明

最后,如果觉得对您有帮助的话,点个赞再走吧!文章来源地址https://www.toymoban.com/news/detail-476067.html

到了这里,关于AcWing算法提高课-1.3.14开心的金明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 提高公众对网络安全的认知和保护意识 - 网络安全法宣传教育

    网络安全在当今数字化时代变得越来越重要,每个人都应该对网络安全有一定的认知和保护意识。为了加强公众对网络安全的认知,我将在本文中介绍网络安全法的重要性,并提供一些实用的宣传教育措施来提高公众的网络安全意识。 网络安全法是中国政府于2016年颁布的一

    2024年02月11日
    浏览(41)
  • ACWing算法基础课

    y总说 java不能用Scanner读入,要用Buffer.read();快十倍二十倍; y总19年5月的视频,牛13! 包括排序、二分、高精度、前缀和与差分、双指针算法、位运算、离散化、区间合并等内容。 一定要先移动end(就是把大数移到右边),后移动start; 否则 先找小数,会出现end start重合位置

    2024年02月13日
    浏览(45)
  • Acwing算法笔记

    持续更新中… 1.快排 2.归并排序 3.整数二分 4.差分 定义: 首先给定一个原数组a:a[1], a[2], a[3], a[n];然后我们构造一个数组b : b[1] ,b[2] , b[3], b[i];使得 a[i] = b[1] + b[2 ]+ b[3] +, + b[i];也就是说,a数组是b数组的前缀和数组,反过来我们把 b数组 叫做a数组的差分数组。换句话说,

    2024年04月09日
    浏览(39)
  • 【算法 | 模拟No.4】AcWing 756. 蛇形矩阵 & AcWing 40. 顺时针打印矩阵

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成

    2024年01月16日
    浏览(54)
  • kmp算法模板(acwing831)

    #define _CRT_SECURE_NO_WARNINGS  #includeiostream #includecstdio #includecstdlib #includestring #includecstring #includecmath #includectime #includealgorithm #includeutility #includestack #includequeue #includevector #includeset #includemath.h #includemap using namespace std; #define LL long long  using ull = unsigned long long; const LL N = 1e6 + 5, mod =

    2024年02月07日
    浏览(35)
  • ACwing算法基础入门代码合集

    快速排序 786.第k个数 归并排序 787.归并排序 788.逆序对的数量 二分 789.数的范围 790.数的三次方根 高精度 791.高精度加法(山西大学2023机试第三题) 792.高精度减法 793.高精度乘法 794.高精度除法 前缀和与差分 795.前缀和 796.子矩阵的和 797.差分 双指针算法 799.最长连续不重复子

    2024年01月25日
    浏览(40)
  • 第1章:算法基础【AcWing】

    阅读前导 * 表示算法的核心步骤。 关于阅读体验:本文只会在比较重要的地方才会使用语法高亮。 虽然 STL 中有相应算法,但本文只讨论原理本身。 [luogu]P1177 【模板】快速排序 利用快速排序算法将读入的 N N N 个数从小到大排序后输出。 输入格式 第 1 1 1 行为一个正整数

    2023年04月27日
    浏览(35)
  • acwing算法基础之搜索与图论--kruskal算法

    kruskal算法的关键步骤为: 将所有边按照权重从小到大排序。 定义集合S,表示生成树。 枚举每条边(a,b,c),起点a,终点b,边长c。如果结点a和结点b不连通(用并查集来维护),则将这条边加入到集合S中。 kruskal算法的时间复杂度为O(mlogm),它用来解决稀疏图的最小生成树问题

    2024年02月05日
    浏览(44)
  • 搜索与图论(acwing算法基础)

    排列数字 n皇后 走迷宫 单链表 点击跳转至例题 idx存的是指针 树与图的深度优先搜索 树的重心 每个节点都是一个单链表 模拟队列 hh = 0 , tt = -1 有向图的拓扑序列 都是从前指向后,即有向无环图(不能有环) 所有入度为0的点,都能排在前面的位置 删掉t-j的边,仅仅是j的入度

    2024年02月08日
    浏览(45)
  • C++算法之动态规划(ACWING题目)

    动态规划时间复杂度:状态数量*转移计算量 线性DP 一.数字三角形 动态规划:     1.状态表示:         集合:f[i, j]表示所有从起点走到(i, j)的路径         属性:所有路径上的数字之和的最大值     2.状态计算:         如何得到f[i, j]?             从左边路径走到和

    2024年02月20日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包