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

embedded/2024/11/14 23:45:23/


 

题目描述

这是一个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/embedded/105417.html

相关文章

什么是公网ip和私网ip?

公网IP&#xff08;Public IP&#xff09;和私网IP&#xff08;Private IP&#xff09;是计算机网络中用于标识设备的两种不同类型的IP地址。它们的主要区别在于可访问性和寻址范围。 1. **公网IP**&#xff1a; - 公网IP地址是全球唯一的&#xff0c;被分配给互联网上的设备或…

《NLP自然语言处理》—— 关键字提取之TF-IDF算法

文章目录 一、TF-IDF算法介绍二、举例说明三、示例&#xff1a;代码实现四、总结 一、TF-IDF算法介绍 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是一种用于信息检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法&#xff0c;用以评估一个词…

新版某数字壳脱壳,过frida检测,及重打包

目录 脱壳 寻找特征& frida hook 过frida检测 修复dex 重打包 修改smail 去签名校验 正文 大家好&#xff0c;我是小生&#xff0c;这次的app是一个国内某计划app, 功能相当全&#xff0c;界面也很美观&#xff0c;很实用&#xff0c;这个app我很欣赏。总共花了有…

使用ElementUI + Vue框架实现学生管理系统前端页面设计

目录 一.什么是ElementUI&#xff1f; 二.使用ElementUI和Vue-cli搭建前端页面 三.具体步骤 1.创建vue-cli项目 2.分析 3.创建组件 四.总结 一.什么是ElementUI&#xff1f; ElementUI是一种网站快速成型工具&#xff0c;一套为开发者&#xff0c;设计师准备的基于Vue2.…

JavaScript的BOM模型

一、浏览器环境概述(BOM) JavaScript 是浏览器的内置脚本语言&#xff0c;一旦网页内嵌了 JavaScript 脚本&#xff0c;浏览器加载网页&#xff0c;就会去执行脚本&#xff0c;从而达到操作浏览器的目的&#xff0c;实现网页的各种动态效果 二、script 元素工作原理 浏览器加…

defineExpose暴露子组件的属性及方法

1. defineExpose 的概念 defineExpose 是 Vue 3 的 Composition API 中一个新的实用函数&#xff0c;用于在 <script setup> 语法下显式暴露组件的公共属性和方法 这在处理子组件时特别有用&#xff0c;允许父组件访问子组件的特定属性或方法 在 Vue 3 中&#xff0c;…

Android 9.0 SystemUI状态栏/快捷设置介绍

Android 9.0 SystemUI状态栏/快捷设置介绍 状态栏 状态栏是SystemUI里的重要功能之一&#xff0c;状态栏的一大功能就是显示功能图标&#xff0c;以告知用户一些最基本的信息状态&#xff0c;在 Android 9.0 版本中&#xff0c;状态栏一般包含运营商信息、时间、日期、电池、通…

有序行转列

一、基础数据 有配送订单表记录骑手配送的物品类型、送达时间、顾客id、配送举例及配送费。 -------------------------------------------------------------------------------------------- | rider_id | order_id | goods_type | delivery_time | customer_id …