萌新6:16进制世界(dp)

news/2024/9/19 22:36:28/ 标签: 算法


 

题目描述

这是一个16进制的世界,比如522的16进制是20A。

在5月22日那天,有人送给Bob一些月饼,每个月饼有饱食度和幸福度两个属性。

现在Bob有nnn个月饼,对于每个月饼iii,饱食度为viv_ivi​,幸福度为wiw_iwi​。

Bob现在有mmm饱食度,意味着他吃的月饼的饱食度之和不大于mmm。

但是由于Bob身处16进制的世界,他吃的月饼的幸福度之和必须是16的倍数。

请帮Bob算一下他最多吃的月饼的数量。

输入描述:

第一行输入两个整数n, mn,\ mn, m接下来nnn行分别输入vi, wiv_i, \ w_ivi​, wi​表示第iii个月饼的饱食度和幸福度。输入数据保证1≤n⋅m≤1051 \leq n \cdot m \leq 10^51≤n⋅m≤105, 1≤vi≤1051 \leq v_i \leq 10^51≤vi​≤105, 1≤wi≤1091 \leq w_i \leq 10^91≤wi​≤109。

输出描述:

一个整数,表示Bob最多能吃的月饼数量

示例1

输入

复制2 5 2 16 3 15

2 5
2 16
3 15

输出

复制1

1

做法

dp[i][j][k]为考虑了前i个月饼,当前的饱食度为j,幸福值为k时选取的月饼个数,这是最先想到的。但是呢,这样会爆空间。我们又看到,要求幸福值为16的倍数,那么我们就去余数就好了,k的那一位不用开那么大。

dp数组递推:从当前位置往前推

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
struct ty{int v,w;  
}a[100010];
signed main(){scanf("%lld%lld",&n,&m);for(int i=1;i<=n;i++){scanf("%lld%lld",&a[i].v,&a[i].w);}vector<vector< vector<int> > > dp(n+1,vector< vector<int> >(m+1,vector<int>(16)));//考虑了前i个月饼,当前的饱食度为j,幸福值为k(16以内,取模)的个数for(int i=0;i<=n;i++){//初始化!!!!for(int j=0;j<=m;j++){for(int k=0;k<16;k++){dp[i][j][k]=-0x3f3f3f3f;}}}dp[0][0][0]=0;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<16;k++){//不选dp[i][j][k]=max(dp[i][j][k],dp[i-1][j][k]);//选if(a[i].v<=j){//从当前位置往前推if(a[i].w%16<=k) dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-a[i].v][k-a[i].w%16]+1);else if(16+k-a[i].w%16<16) dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-a[i].v][16+k-a[i].w%16]+1);}} }}int ans=0;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){ans=max(dp[i][j][0],ans);}}cout<<ans;}

dp数组递推:从当前位置往后推

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
struct ty{int v,w;  
}a[100010];
signed main(){scanf("%lld%lld",&n,&m);for(int i=1;i<=n;i++){scanf("%lld%lld",&a[i].v,&a[i].w);}vector<vector< vector<int> > > dp(n+1,vector< vector<int> >(m+1,vector<int>(16)));//考虑了前i个月饼,当前的饱食度为j,幸福值为k(16以内,取模)的个数for(int i=0;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<16;k++){dp[i][j][k]=-0x3f3f3f3f;}}}dp[0][0][0]=0;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<16;k++){dp[i][j][k]=max(dp[i-1][j][k],dp[i][j][k]);//一定要赋值!!!if(j+a[i].v<=m){//从当前位置往后推//不选dp[i][j+a[i].v][(k+a[i].w%16)%16]=max(dp[i-1][j+a[i].v][(k+a[i].w%16)%16],dp[i][j+a[i].v][(k+a[i].w%16)%16]);//选dp[i][j+a[i].v][(k+a[i].w%16)%16]=max(dp[i-1][j][k]+1,dp[i][j+a[i].v][(k+a[i].w%16)%16]);}} }}int ans=0;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){ans=max(dp[i][j][0],ans);}}cout<<ans;}

WA的原因

1.dp数组没有初始化为负数。之前写的一些dp题,求最大值都不用初始化dp数组,因为本身就为0,所以就理所当然了。

2.每层都要赋好值(第二种方法)。要考虑到选和不选的情况,特别是不选的情况。


http://www.ppmy.cn/news/1520452.html

相关文章

未来城市生活:科技与人文的交响

随着技术的发展&#xff0c;未来的城市生活正在以前所未有的速度演变。从智能家居到绿色能源解决方案&#xff0c;再到增强现实&#xff08;AR&#xff09;技术的应用&#xff0c;每一个方面都在重新定义我们对日常生活的认知。本文将探讨这些变化&#xff0c;并展望一个更加智…

3分钟快速本地搭建RSShub服务器并结合内网穿透实现无公网IP远程访问

文章目录 前言1. Docker 安装2. Docker 部署Rsshub3. 本地访问Rsshub4. Linux安装Cpolar5. 配置公网地址6. 远程访问Rsshub7. 固定Cpolar公网地址8. 固定地址访问 前言 今天和大家分享的是如何在本地快速简单部署Rsshub工具&#xff0c;并结合cpolar内网穿透工具使用公网地址远…

C语言——指针专题

1.指针变量 指针变量是用来存储地址值的变量 #include<stdio.h> int main() {int a 10;int* pa &a;//1.这里*表示pa是指针变量//2.int表示pa指向的变量a的类型是int return 0; } 指针变量也是一种变量&#xff0c;这种变量可以用来存放地址的&#xff0c;存放…

【优化】Nginx 配置页面请求不走缓存 浏览器页面禁用缓存

【优化】Nginx 配置页面请求不走缓存 禁用缓存 目录 【优化】Nginx 配置页面请求不走缓存 禁用缓存 对所有请求禁用缓存 对特定location禁用缓存 注意事项 全局禁用缓存 要配置Nginx使其不缓存内容&#xff0c;通常是指禁止浏览器缓存响应的内容&#xff0c;或者是在代理…

JavaEE-servlet

JavaEE 1.创建JavaEE程序 package com.ffyc.dormServer.web; ​ import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServ…

Nvidia股价前景引投资者情绪波动:杠杆ETF数据透视市场风向

一、Nvidia业绩前瞻&#xff1a;看跌情绪升温 随着Nvidia&#xff08;NVDA&#xff09;季度业绩发布日的临近&#xff0c;市场中的投资者情绪似乎正经历着微妙的变化。据多家发行杠杆型交易所交易基金&#xff08;ETF&#xff09;的机构数据显示&#xff0c;投资者对看跌Nvidia…

【Dash】feffery_antd_components 模块中的布局

一、各个组件在布局中担任不同的角色 在 feffery_antd_components 模块中&#xff0c;AntdSpace、AntdRow、AntdCol、AntdLayout、AntdAffix 这些组件在布局中各自承担不同的角色&#xff1a; 1、AntdSpace 组件 主要用于快捷对一组元素进行水平或竖直方向上的规整排列。它可…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#xff08;KNN分类器&#xff09; 文章目录 一、基本原理原理流程举个例子总结 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#x…

【Rust光年纪】探索Rust中的物理引擎库:功能、安装与API概览

助力游戏开发&#xff1a;Rust中几款强大的物理引擎库介绍 前言 随着Rust编程语言的日益流行&#xff0c;越来越多的开发者开始在Rust中构建游戏和图形应用程序。物理引擎是这些应用程序中不可或缺的一部分&#xff0c;而Rust社区也涌现出许多优秀的物理引擎库&#xff0c;本…

【科研绘图】【3D轨线图】:附Origin详细画图流程

目录 No.1 理解3D轨线图 No.2 画图流程 1 导入数据并绘图 2 设置绘图细节 3 设置坐标轴 4 效果图 No.1 理解3D轨线图 3D轨线图&#xff0c;是指在三维坐标系中&#xff0c;通过连续的点或线段连接而成的图形&#xff0c;用于表示一个或多个物体在三维空间中的运动路径。…

git branch 不显示分支名称

如果在使用 git branch 或 git status 时无法显示分支名称&#xff0c;可能有以下几种原因。以下是常见的原因和解决方法&#xff1a; 1. 检查是否在 Git 仓库中 确保你在一个有效的 Git 仓库目录下。运行以下命令来确认&#xff1a; git status如果你看到类似于 fatal: not…

Verilog刷题笔记62

题目: Exams/review2015 fancytimer This is the fifth component in a series of five exercises that builds a complex counter out of several smaller circuits. You may wish to do the four previous exercises first (counter, sequence recognizer FSM, FSM delay, an…

黑马大事件

项目介绍 演示网站&#xff1a; https://fe-bigevent-web.itheima.net/login 实现 1&#xff09;创建项目 npm init vuelatest2&#xff09;安装项目需要的依赖 npm install element-plus --save npm install axios npm install sass -D3&#xff09;在main.js中加入Elem…

低代码用户中心的构建与应用

引言 在现代软件开发中&#xff0c;低代码平台因其高效、灵活、用户友好的特性而逐渐受到青睐。特别是在用户中心的构建方面&#xff0c;低代码平台能够显著提升开发效率&#xff0c;降低开发成本。本文将探讨如何利用低代码平台构建一个高效的用户中心&#xff0c;并分享一些…

记录工作时的一些错误

1、mobaxterm问题&#xff1a; 解决方案&#xff1a;找不到mottynew.exe 2、虚拟机安装centos7进入不了引导页面 解决方案&#xff1a;检查镜像 虚拟机 192.168.40.128 root/Root yxr/y123x123r123 解决方案&#xff1a; 问题&#xff1a;docker run不起来容器&#xff0c;显…

计算机视觉软件教学平台

1、基本介绍 计算机视觉软件教学平台是中智讯公司开发的一款面向人工智能相关专业机器视觉方向的综合型实验平台&#xff0c;主要满足&#xff1a;图像处理、图像识别、机器视觉应用、边缘计算应用、智能算法等课程的实验和实训&#xff0c;是基于新工科和工程教育思维和专业改…

MATLAB 中的对数计算

在 MATLAB 中&#xff0c;计算对数是进行数学分析和科学计算的常见需求。对数运算在数据分析、信号处理和控制系统中都有广泛应用。本篇博客将详细介绍如何在 MATLAB 中进行对数计算&#xff0c;包括自然对数、常用对数以及任意底数的对数。 1. 自然对数&#xff08;以 e 为底…

Spark-Yarn模式如何配置历史服务器

在Spark程序结束之后我们也想看到运行过程怎么办&#xff1f; Yarn模式下&#xff0c;通过以下步骤配置历史服务器即可: mv spark-defaults.conf.template spark-defaults.conf修改spark-default.conf 文件&#xff0c;配置日志存储路径 spark.eventLog.enabled true spark.…

xxxSendMessageBSM函数分析

BSM的意思&#xff1a;Broadcast Special Message 第一部分A&#xff1a; //Broadcast Special Message Recipient list #define BSM_ALLCOMPONENTS 0x00000000 #define BSM_VXDS 0x00000001 #define BSM_NETDRIVER 0x00000002 #define BSM_INS…

鸿蒙模拟器篇

1、首先需要在华为官网申请模拟器资格&#xff0c;附链接&#xff1a;鸿蒙模拟器&#xff08;HarmonyOS Emulator&#xff09;Beta活动申请 填写相关信息提交申请&#xff0c;申请结果状态在个人中心 — 我的活动页面查看 2、申请通过之后开始下载模拟器 注意&#xff1a…