小梁的背包(01背包---一维数组)

01背包问题终极版(一维数组表示) 接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 ii 件物品的体积和价值。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。有 N 件物品和一个容量是 VV 的背包。每件物品只能使用一次。第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。第 i 件物品的体积是 vi,价值是 wi。输出一个整数,表示最大价值。 阅读详情

时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

小梁来到了伽勒尔地区并参加了联盟赛热身赛,比赛小岛上有n个精灵散落在岛上各处,她有一个大小为s的背包,每个精灵的战斗值为vi​,体积为wi​。
请问在她临走之前背包内宝可梦的战斗力总和最多为多少,并输出其战斗值总和sum以及背包内的精灵数量ans。

输入描述:

输入一个整数T(1≤T≤200)表示测试组数
每组数据的第一行有两个整数 n,s(1≤n,s≤10^4)
接下来有n行数据,每行两个代表宝可梦体积wi​和战斗值vi(1≤wi,vi≤10^4)

输出描述:

输出T组,每组一行sum 和 ans

样例输入
1
5 5
1 3
2 5
1 2
4 2
6 1
样例输出
10 3

代码:

#include<iostream>
#include<string>
#include<map>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define INF 0x3f3f3f3f
#define P pair<int,int>
using namespace std;
typedef long long ll;
const double eps=1e-6;
const int N=1e4+10;
const int maxn=2e9;
const int mod=1000000007;
int w[N],v[N],f[N];
int t,n,s,dp[N];
int main()
{
   cin>>t;
   while(t--)
   {
      memset(dp,0,sizeof(dp));
      memset(f,0,sizeof(f));
      int ans=0;
      cin>>n>>s;
      for(int i=1;i<=n;i++)
      {
          cin>>w[i]>>v[i];
      }
      for(int i=1;i<=n;i++)
      {
          for(int j=s;j>=w[i];j--)
          {
              dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
              if(dp[j]==dp[j-w[i]]+v[i]) f[j]=f[j-w[i]]+1;
          }
      }
      cout<<dp[s]<<' '<<f[s]<<endl;
    }
    return 0;
}
ROC-RK3588S-PC 刷机 安装Android系统 rk3588刷机,装系统 阅读详情

相关推荐

matlab实现MSK调制解调

文章目录一、要求二、设计三、代码四、结果五、结论 一、要求 画出MSK信号产生的信息、I路、Q路信号对比图以及接收端解调的信息恢复的对比图。 二、设计 1.MSK调制 2.MSK解调 三、代码 clear all;clc; N=20; T=1; fc=10; Fs=100; bitstream=randi([0,1],1,N); bitstream1=2*bitstream-1; b0=1; for i=1:N encode_output(i)=b0*bitstream

Time_book的博客 1万+

背包问题(复习用)

1.二维数组的形式:有一个下标的差距2.一维数组的形式:j 的升序和降序。

weixin_73899814的博客 112

Simulink单相桥式有源逆变电路仿真:从器件选型到波形分析(MATLAB 2018a实战)

本文基于MATLAB 2018a的Simulink平台,详细演示了单相桥式有源逆变电路的完整仿真流程。从Simscape/Power Systems库的器件选型、参数配置,到触发脉冲设置与电路连接,逐步指导搭建仿真模型。通过调整触发角α,直观展示了电路从整流到有源逆变的工作状态切换,并深入分析了负载电压、电流波形,以及逆变颠覆现象的产生条件与特征。

cake8的博客 1159

01背包问题:一、二维数组

动态规划,01背包问题,使用一维数组实现。

lanlin的博客 522

Macbook Pro Bootcamp 安装触控板驱动mac-precision-touchpad在Windows系统下实现更好的触控板操作

由于很多软件的限制,所以不得不在Windows和MacOS之间进行切换,然而,Windows下虽然Bootcamp提供了触控板的驱动,然而只能实现简单的上下滑动和点击等操作,而且在滑动页面的时候滑动非常不流畅,体验极差。 今天无意间发现了一款第三方撰写的驱动,可以较为完美地实现Macbook笔记本在Windows系统下的触控板操作支持,通过在我的2015款Macbook Pro(A1502)进行安装测试,感觉体验很不错,在这里分享给大家。 驱动来自于Github上的imbushu,他的项目地址如下: htt

博客 1万+

Homebrew高效升级与国内镜像源配置全攻略

本文详细介绍了如何通过配置国内镜像源(如清华、中科大、阿里云)来高效升级Homebrew,解决国内开发者访问GitHub仓库速度慢的问题。文章提供了从基础配置到永久生效的完整教程,包括常见问题解决和进阶技巧,帮助开发者大幅提升软件包管理效率。

weixin_28835551的博客 416

关于01背包的一维数组方法

01背包二维数组动态规划 * 01背包问题 * 给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。 * 其中第i个物品的重量为wt[i],价值为val[i], * 现在让你用这个背包装物品,最多能装的价值是多少? 这是二维数组的代码,N个物品为外循环,W容量为内循环 int packaging(int N,int W,int[] wt,int[] val){ int [][] dp = new int[N+1][W+1]; for (int i = 1;

weixin_44769767的博客 382

3D缺陷检测实战:从点云处理到工业质检优化

本文深入探讨了3D缺陷检测在工业质检中的实战应用,详细阐述了从点云处理到深度学习模型部署的完整技术链路。文章通过PCB焊点检测等实际案例,分析了3D视觉相比2D检测在识别深度、形状等缺陷方面的优势,并分享了点云滤波、分割、特征提取以及利用YOLOv5等模型进行高效检测的优化心得与落地挑战。

weixin_28358083的博客 337

Nowcoder 小梁的背包

Nowcoder 小梁的背包

NEFU AB-IN's Blog 263

保姆级教程:用STM32F103C8T6和MAX6675搞定K型热电偶测温(附模拟/硬件SPI双版本代码)

本文提供STM32F103C8T6与MAX6675实现K型热电偶高精度测温的保姆级教程,涵盖硬件连接、SPI驱动实现及模拟SPI方案,并附双版本代码。详细解析温度数据读取、处理及常见问题排查,助力工业控制、实验室设备等场景的稳定测温系统搭建。

weixin_30765505的博客 587

制作3D地形图的方法-使用GlobalMapper和3ds Max软件

打开GlobalMapper软件,在菜单栏中选择“文件”>“打开数据文件”,然后选择相应的高程数据文件。在菜单栏中选择“渲染”>“渲染设置”,根据需要进行设置,如分辨率和输出格式。选择地形对象,点击菜单栏中的“渲染”>“材质编辑器”,然后根据需要调整材质属性,如颜色、纹理和光照等。在菜单栏中选择“工具”>“高程栅格和网格”>“创建地形网格”。在菜单栏中选择“文件”>“导出”>“导出栅格格式”。打开3ds Max软件,在菜单栏中选择“文件”>“导入”,然后选择之前导出的地形数据文件。步骤3:导出地形网格。

JqlScala的博客 1535

动态规划——01背包问题

动态规划-背包问题 动态规划其实没有想象的那么难,恰恰相反,如果理解掌握了,其代码长度与算法优化程度都会得到大大提升 01背包问题: 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。 接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。 输出

balding_man的博客 474

MATLAB 与 STK 互联的两种连接方式详解

批量仿真推荐使用方法一;交互分析推荐使用方法二。可以根据具体任务灵活切换,也可以同时使用两种方式,提升建模与仿真的效率。

weixin_52370774的博客 1566

宁波工程学院2020新生校赛J - 小梁的背包(01背包)

链接:https://ac.nowcoder.com/acm/contest/6106/J 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 小梁来到了伽勒尔地区并参加了联盟赛热身赛,比赛小岛上有n个精灵散落在岛上各处,她有一个大小为s的背包,每个精灵的战斗值为v,体积为w 请问在她临走之前背包内宝可梦的战斗力总和最多为多少,并输出其战斗值总和sum以及背包内的精灵数量ans。 输入描述

在读NLP硕士 469

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

01背包 完全背包

背包数量记录,背包路径记录。

NEFU AB-IN's Blog 1034

数学建模模型总结

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

01背包问题(动态规划)+一维数组的优化

01背包问题(动态规划) 题目描述: 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式: 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。 接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体...

阿林的博客 5687

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

宁波工程学院2020新生校赛 A.水 B.水 C.数学 G.dfs/bfs J.01背包

链接:https://ac.nowcoder.com/acm/contest/6106/A 来源:牛客网 A 题目描述 小梁居住在关都地区的真新镇,年满十岁的她已经成为一名宝可梦新手训练家,为了获取第一只精灵,她来到了Doctor Rabbit的实验室。 Doctor Rabbit给了小梁n只精灵数值进行选择,小梁是一个认真的人,她将会根据宝可梦的最大数值、最小数值以及平均数值进行选择。 但是小梁不会算数,聪明的你能帮帮她计算宝可梦的最大数值、最小数值以及平均数值吗? (平均数保留两位小数) 输入描述: 第

Gyibin的博客 528

01背包问题---(一维数组)

思路 1.定义dp数组 dp[j]:表示为背包容量为j时的最大价值。 2.递推公式 当weight[i]的重量比当前背包的容量小时,说明当前背包可以将物品i放入进来,此时dp[j]=dp[j-物品i的重量]+物品i的价值。此时也可以选择不放进来,则dp[j] = dp[j]。最后dp[j]为二者中最大的。 3.dp数组初始化 dp[0]就是背包容量为0时的价值。应该为0; 4.遍历顺序 因为dp[j]与dp[j-weight[i]]有关,所以就是正序遍历 5.打印顺序 最后的结果就是在数

ALi的博客 2301

J 小梁的背包(01背包,记录所选物品数量)

题目传送门 题意: 给你一个容量为s的背包,n个物品,每个物品有自己的价值和体积,求背包所能容纳的物品的最大价值,并求出此时背包中物品数量。 思路: 求最大价值并不难,直接模板就行了,然后输出数量的话,我们看价值的转移方程:dp[j]=max(dp[j],dp[j-w[i]]+v[i]); 对于第i件物品,选或者不选,如果选了,那么我们可以cnt[j]=cnt[j-w[i]]+1; 表示容量为j的背包比容量为j-w[i]的背包多了一件物品,最后输出dp[s]和cnt[s]就行了。 #include<b

Joker_He的博客 491

完全背包使用一维数组

对于01背包和完全背包,无论是空间复杂度还是时间复杂度,最优的方法还是使用一维数组进行实现。 基于01背包的分析,由于不必考虑物品的重复放入,故v的循环采用顺序即可。代码如下: #include using namespace std;     int maxV[201];     int weight[11]; int value[11]; int V, N;   void main() {

fobdddf的专栏 979

01背包一维dp数组的实现

二维的01背包模板重点内容include include include # using namespace std; const int maxw = 10000;** const int maxn = 100; int n,W; int w[maxw 2],v[maxn 2],dp[maxw **2];int main() { cin >> n >> W; for

Junhan's Blog 967

01背包问题-一维数组实现原理

题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是: f [ i ][ v ]=max{ f [ i-1 ][ v ],f [ i...

逐梦er的博客 3362

背包问题(01背包和完全背包)一维数组实现

01 背包问题 http://hihocoder.com/problemset/problem/1038 一维数组优化 且说小Ho搞清楚了计算方法,正在埋头苦写代码,在一旁看他写代码的小Hi是在看不下去了,决定再指点指点小Ho:“小Ho啊!” “怎么了?”小Ho眼睛盯着屏幕,望都没望小Hi一眼。 “你现在是不是需要开一个N * M大小的二维数组best,来记录求解出的best

战场小包的博客 9993

0-1背包使用一维数组

使用滚动数组将空间优化到了2*V,在背包九讲中提到了使用一维数组也可以达到同样的效果,个人认为这也是滚动思想的一种,由于使用一维数组解01背包会被多次用到,完全背包的一种优化实现方式也是使用一维数组,所以我们有必要理解这种方法。 如果只使用一维数组f[0…v],我们要达到的效果是:第i次循环结束后f[v]中所表示的就是使用二维数组时的f[i][v],即前i个物体面对容量v时的最大价值。我们知道

fobdddf的专栏 1500

01背包一维数组

贝茜去了购物中心的珠宝店,探寻一条魅力手链。 当然,她想用N个(1≤N≤3,402)可用的饰物填充尽可能的最佳饰物。 提供的列表中的每个超级字符i的权重均为Wi(1≤Wi≤400),“合意性”因子Di(1≤Di≤100),最多可以使用一次。 贝西只能支撑重量不超过M(1≤M≤12,880)的手链。 给定重量限制作为约束,并列出具有其重量和合意性等级的护身符清单,就可以得出最大可能的等级总和。 输入...

niuguangzhi的博客 553
上一篇: upc 偶数(栈)
下一篇: upc 连通块
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值