当前位置: 首页 > news >正文

[蓝桥杯] 数学与简单DP问题

  

文章目录

一、简单数学问题习题练习 

1、1 买不到的数目

1、1、1 题目描述

1、1、2 题解关键思路与解答

1、2 饮料换购

1、2、1 题目描述

1、2、2 题解关键思路与解答

二、DP问题习题练习

2、1 背包问题

2、1、1 题目描述

2、1、2 题解关键思路与解答

2、2 摘花生

2、2、1 题目描述

2、2、2 题解关键思路与解答

2、3 最长上升子序列

2、3、1 题目描述

2、3、2 题解关键思路和解答

 三、总结 


标题:蓝桥杯——数学与简单DP问题习题练习

作者:@Ggggggtm

寄语:与其忙着诉苦,不如低头赶路,奋路前行,终将遇到一番好风景

 

一、简单数学问题习题练习 

  蓝桥杯比赛中常见的还有一类数学问题,这些数学问题有的是有公式计算,有的是考察的思维逻辑。我们具体来看例题。

1、1 买不到的数目

1、1、1 题目描述

题目来源:第四届蓝桥杯省赛C++A组,第四届蓝桥杯省赛JAVAC组

题目难度:简单

题目描述:小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。

输入格式:

  两个正整数 n,m,表示每种包装中糖的颗数。

输出格式:

  一个正整数,表示最大不能买到的糖数。

数据范围:

  2≤n,m≤1000,
  保证数据一定有解。

输入样例:

4 7

输出样例:

17

1、1、2 题解关键思路与解答

  我们先关插题目,是两个数找到这两个数最大凑不出来的数。当两个数是由除1外还有其他的公约数时,我们发现并不能找到这两个数最大凑不出来的数。也就是当两个数互质时,才能够找出这两个数最大凑不出来的数。这里是有一个公式的,我们假设这两个数分别是p、q,两个数互质,那么求这两个数最大凑不出来的数的公式为:(p-1)*(q-1)-1。我们看一下本题的代码。

#include<iostream>using namespace std;int p,q;int main()
{cin>>p>>q;cout<<(p-1)*(q-1)-1;return 0;
}

1、2 饮料换购

1、2、1 题目描述

题目来源:第六届蓝桥杯省赛C++A/C组,第六届蓝桥杯省赛JAVAB组

题目难度:简单

题目描述:乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。

输入格式:

  输入一个整数 n,表示初始买入的饮料数量。

输出格式:

  输出一个整数,表示一共能够喝到的饮料数量。

数据范围:

  0<n<10000。

输入样例:

100

输出样例:

149

1、2、2 题解关键思路与解答

  本题目主要考察的是思维逻辑能力。我们要注意的是本题有一个陷阱,就是我们需要注意用瓶盖换瓶子的时候可能会有剩余,下次再换的时候我们的瓶盖数量就是已经换购的饮料数量加喝完上上次剩下的瓶盖数量。我们直接看代码。

#include<iostream>using namespace std;int n;int main()
{cin>>n;int sum=n;int ret=n;while(ret >= 3){sum+=ret/3;ret=ret/3+ret%3;}cout<< sum;return 0;
}

二、DP问题习题练习

2、1 背包问题

2、1、1 题目描述

题目来源:AcWing

题目难度:简单

题目描述:有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。

第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。

输入格式:

  第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。

  接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。

输出格式:

  输出一个整数,表示最大价值。

数据范围:

  0<N,V≤1000,
  0<vi,wi≤1000。

输入样例:

4 5
1 2
2 4
3 4
4 5

输出样例:

8

2、1、2 题解关键思路与解答

  这里我们用闫氏DP分析法进行分析:   上述思想的关键就是状态计算。我们不选第 i 个物品时,其前 i-1个物品的总价值和为      f[i-1][j],那么第 i 个物品的价值也为 f[i-1][j]。如我们选上第 i 个物品时,计算其价值为前 i-1 个物品的价值表示为 f[i-1][j-v[i]],那么选上第i个物品的价值为 f[i-1][j-v[i]] + w[i]。在两者值减去一个较大的就行。我们看代码的实现。

#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;const int N =1010;int f[N][N];int n,m;int v[N],w[N];
int main()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>v[i]>>w[i];for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){f[i][j]=f[i-1][j];if(j>=v[i])f[i][j]=max(f[i][j],f[i-1][j-v[i]]+w[i]);}}cout<<f[n][m]<<endl;return 0;
}

2、2 摘花生

2、2、1 题目描述

题目来源:《信息学奥赛一本通》

题目难度:简单

题目描述:Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。

输入格式:

  第一行是一个整数T,代表一共有多少组数据。

  接下来是T组数据。

  每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。

  每组数据的接下来R行数据,从北向南依次描述每行花生苗的情况。每行数据有C个整数,按从西向东的顺序描述了该行每株花生苗上的花生数目M。

输出格式:

  对每组输入数据,输出一行,内容为Hello Kitty能摘到得最多的花生颗数。

数据范围:

  1≤T≤100,
  1≤R,C≤100,
  0≤M≤1000。

输入样例:

2
2 2
1 1
3 4
2 3
2 3 4
1 6 5

输出样例:

8
16

2、2、2 题解关键思路与解答

  该题我们同样用闫氏DP分析法:   状态计算中的集合划分大部分情况下的依据是最后不相同的一步。这道题就是走到右下角只能是从正上走过来,或者正左走过来。我们只需要选出这两者的较大的一个,再加上右下角的花生数量即可。我们结合着代码一起理解一下。

#include<iostream>using namespace std;const int N=110;int f[N][N],w[N][N];int n,m;int main()
{int T=0;cin>>T;while(T--){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&w[i][j]);}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){f[i][j]=max(f[i-1][j],f[i][j-1])+w[i][j];}}cout<<f[n][m]<<endl;}return 0;
}

2、3 最长上升子序列

2、3、1 题目描述

题目来源:AcWing

题目难度:简单

题目描述:给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。

输入格式:

  第一行包含整数 N。

  第二行包含 N 个整数,表示完整序列。

输出格式:

  输出一个整数,表示最大长度。

数据范围:

  1≤N≤1000,
  −1e9≤数列中的数≤1e9。

输入样例:

7
3 1 2 1 8 5 6

输出样例:

4

2、3、2 题解关键思路和解答

  该题目可能会给很多同学造成一个错误的理解。题目中的要求是求数值严格单调递增的子序列的长度最长是多少,指的是不是连续的也行。如上述案例,最大上升子序列为:1,2,5,6。那该怎么求呢?我们用闫氏DP法进行分析:

  这里关键的就是我们枚举出以i结尾的最大的长度即可。最后在从不同结尾当中找出最大值。那我们怎么计算出以i结尾的最大长度呢?我们只需要在i之前,且比 a[i] 的就行,更新 f[i] 的值即可。我们结合着代码一起理解一下:

#include<iostream>using namespace std;const int N=1010;int a[N],f[N];int main()
{int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++){if(a[j]<a[i])f[i]=max(f[i],f[j]+1);}}int res=0;for(int i=1;i<=n;i++)res=max(res,f[i]);cout<<res;return 0;
}

 三、总结 

  关于数学的问题,我们主要是对刷题进行练习巩固。DP动态规划的问题大多数情况是有固定的分析路线,也是需要多加做题练习。

  今天的练习就到这里,希望以上内容对你有所帮助,感谢观看。

相关文章:

[蓝桥杯] 数学与简单DP问题

文章目录 一、简单数学问题习题练习 1、1 买不到的数目 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 饮料换购 1、2、1 题目描述 1、2、2 题解关键思路与解答 二、DP问题习题练习 2、1 背包问题 2、1、1 题目描述 2、1、2 题解关键思路与解答 2、2 摘花生 2、2、1 题目…...

浏览器的渲染过程解析

文章目录浏览器渲染进程有哪些&#xff1f;浏览器的渲染过程浏览器渲染进程有哪些&#xff1f; GUI线程&#xff1a;负责渲染浏览器页面&#xff0c;解析html&#xff0c;css&#xff0c;构建DOM树&#xff0c;CSS规则树&#xff0c;渲染树和绘制页面&#xff0c;当界面需要重…...

【C++容器】std::fstream读写文件错误【2023.03.03】

std::fstream使用细节 1.文件不存不支持时打开文件模式不得有ios::in • 如果文件不存在且打开时包括了ios::in模式则打开文件会失败。 fstream m_f;m_f.open("d://123.csv", ios::in | ios::out | ios::binary);//文件不存在则会打开失败• 我这边尝试行得通的做…...

UVM实战--带有寄存器的加法器

一.整体的设计结构图 这里将DUT换成加法器&#xff0c;可以理解为之前UVM加法器加上寄存器&#xff0c;这里总线的功能不做修改&#xff0c;目的看代码的移植那些部分需要修改。 二.各个组件代码详解 2.1 DUT module dut( input clk, input rst_n, input…...

笔记--学习mini3d代码

主要是记录学习mini3d代码时&#xff0c;查的资料&#xff1b; 从github下载的代码&#xff1a; GitHub - skywind3000/mini3d: 3D Software Renderer in 700 Lines !!3D Software Renderer in 700 Lines !! Contribute to skywind3000/mini3d development by creating an a…...

图片服务器

文章目录一、项目简介二、功能及场景三、业务设计四、数据库设计准备图片表准备实体类五、API设计常用功能封装文件上传文件上传获取图片列表接口获取图片内容删除图片接口六、项目优化七、测试自动化测试测试用例一、项目简介 图片服务器&#xff1a;解决项目中插入图片的问题…...

【JAVA程序设计】【C00110】基于SSM(非maven)的车辆维修管理系统

基于SSM&#xff08;非maven&#xff09;的车辆维修管理系统项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架非maven开发的车辆维修管理系统共分为三个角色&#xff1a;管理员、用户 管理员角色包含以下功能&#xff1a; 查看用户、添加用户、查看车辆信息、故…...

微积分小课堂:用动态的眼光去找问题的最优解(最大值/最小值)【中学里的解题技巧】

文章目录 引言I 最优化问题1.1 不同形式的最优化1.2 用动态的眼光去找问题的最优解引言 把比较数大小的问题,变成了寻找函数变化拐点的问题,将这两个问题等同起来,需要发明一种工具,叫做导数。有了导数这个工具,求最大值问题就变成了解方程的问题。 用变化的眼光找到最优…...

网络爬虫和相关工具

在理想的状态下&#xff0c;所有ICP&#xff08;Internet Content Provider&#xff09;都应该为自己的网站提供API接口来共享它们允许其他程序获取的数据&#xff0c;在这种情况下爬虫就不是必需品&#xff0c;国内比较有名的电商平台&#xff08;如淘宝、京东等&#xff09;、…...

OSSFs挂载工具简介

OSSFs挂载工具 OSSFs挂载工具简介 ​ ossfs允许您在Linux系统中将对象存储OSS的存储空间&#xff08;Bucket&#xff09;挂载到本地文件系统。挂载完成后&#xff0c;您能够像操作本地文件一样操作OSS的对象&#xff08;Object&#xff09;&#xff0c;从而实现数据共享。 ​…...

Spring 容器创建初始化,获取bean流程分析

Spring 容器创建初始化&#xff0c;获取bean流程分析 Spring 容器创建初始化 流程分析 1、首先读取bean.xml 文件 2、扫描指定的包 com.hspedu.spring.component 2.1、扫描包&#xff0c;得到bean的class对象&#xff0c;排除包下不是bean的 2.2、扫描将bean信息封装BeanDef…...

无聊小知识.03 Springboot starter配置自动提示

1、前言Springboot项目配置properties或yaml文件时候&#xff0c;会有很多spring相关的配置提示。这个是如何实现的&#xff1f;如果我们自己的配置属性&#xff0c;能否也自动提示&#xff1f;2、Springboot配置自动提示其实IDE是通过读取配置信息的元数据而实现自动提示的。S…...

2023-03-03 mysql-join类别-分析

目录 摘要: mysql版本: DDL: 表结构: 插入数据: JOIN: 一. SELECT 二. INNER JOIN...

Saleen 系列来袭!

由 Ghostopunch 创作&#x1f47b;&#x1f94a; Ghostpunch 将 Saleen Automotive 带入 The Sandbox 元宇宙&#xff01; 是 Saleen Automotive 于 1984 年由汽车界的梦想家 Steve Saleen 创立&#xff0c;目标是将经过比赛验证的性能带入大街小巷和元宇宙……&#x1f609; 5…...

如何优雅地处理Java中的null值?使用Optional类来实现!

当我们在Java编程时&#xff0c;经常会遇到处理null值的问题。在Java 8中&#xff0c;引入了一个Optional类来解决这个问题。Optional类可以看作是一个容器&#xff0c;用于包装一个可能为null的值。它提供了一些方便的方法&#xff0c;以优雅地处理null值的情况。 下面我将详…...

巾帼绽芬芳 一起向未来(中篇)

编者按&#xff1a;为了隆重纪念纪念“三八”国际妇女节113周年&#xff0c;快来与你全方位、多层次分享交流“三八”国际妇女节的前世今生。分上篇&#xff08;节日简介、节日发展和节日意义&#xff09;、中篇&#xff08;节日活动宗旨和世界各国庆祝方式&#xff09;和下篇&…...

espnet training

from:ESPnet2 — ESPnet 202301 documentation from :Change the configuration for training — ESPnet 202301 documentation 训练完之后微调的命令: ./run.sh --stage 11 --ngpu 1 --asr_args "--max_epoch 205 --optim_conf lr=0.1 --resume true" --asr_exp…...

qsort函数的应用以及模拟实现

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍库函数qsort函数的模拟实现和应用 金句分享: ✨追…...

【iobit 软件】家族系列 - 正版激活码

装机必备iobit系列软件 - 激活码获取看最后 第一款、Advanced SystemCare 16 您需要的人工智能驱动的PC优化器&#xff0c;以释放磁盘空间&#xff0c;加速PC并保护在线隐私。 功能特点&#xff1a; 1. 系统清理与优化&#xff1a;通过清除系统垃圾文件、注册表信息、无用文…...

ACM-大一训练第三周(Floyd算法+并查集算法专题训练)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...