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

【蓝桥杯python研究生组备赛】005 数学与简单DP

题目1 01背包

有 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

python代码

N=1010
n,v=map(int,input().split())
data=[[0,0]]
for i in range(n):a,b=map(int,input().split())data.append([a,b])
dp=[[0 for _ in range(N)]for _ in range(N)]# print(data)
for i in range(1,n+1):for j in range(1,v+1):if data[i][0]>j:dp[i][j]=dp[i-1][j]else:dp[i][j]=max(dp[i-1][j],dp[i-1][j-data[i][0]]+data[i][1])
print(dp[n][v])

知识点

  1. 动态规划,因为需要用到下标i-1,一般下标都是从1开始
  2. 背包问题是组合问题的范畴,另外几个模型是,路线问题、最长上升子序列问题等
  3. dp[i][j]含义:从前i个物品中选,总体积不超过j的选法的集合
    • 不选择第i个物品:等价于dp[i-1][j]
    • 选择第i个物品:首先看第i个物品的体积是否大于体积,若小于,则比较最终的价值相比 不选更高,若更高,则选择第i个物品

题目2 摘花生

Hello Kitty想摘点花生送给她喜欢的米老鼠。

她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。

地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。

Hello Kitty只能向东或向南走,不能向西或向北走。

问Hello Kitty最多能够摘到多少颗花生。

1.gif

输入格式

第一行是一个整数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
```## python代码```python
t=int(input())
N=110
while t:r,c=map(int,input().split())data=[[0 for _ in range(c+1)]for _ in range(r+1)]dp=[[0 for _ in range(N)]for _ in range(N)]#初始化状态for i in range(1,r+1):data[i]=[0]+list(map(int,input().split()))for i in range(1,r+1):for j in range(1,c+1):dp[i][j]=max(dp[i-1][j]+data[i][j],dp[i][j-1]+data[i][j])print(dp[r][c])t-=1

知识点

  1. 从第一行开始置换每一行数据:
    for i in range(1,r+1):data[i]=[0]+list(map(int,input().split()))
    
  2. dp[i][j]含义:从起点到(i,j)坐标的路线集合,集合划分为两类
    • 上一步是从左往右走:等价于dp[i][j-1]
    • 上一步是从上往下走:等价于dp[i-1][j]
  3. 集合计算:找到最大值,加上当前数据值data[i][j]

题目3 最长上升子序列

题目描述

这是一个简单的动规板子题。

给出一个由 n ( n ≤ 5000 ) n(n\le 5000) n(n5000) 个不超过 1 0 6 10^6 106 的正整数组成的序列。请输出这个序列的最长上升子序列的长度。

最长上升子序列是指,从原序列中按顺序取出一些数字排在一起,这些数字是逐渐增大的。

输入格式

第一行,一个整数 n n n,表示序列长度。

第二行有 n n n 个整数,表示这个序列。

输出格式

一个整数表示答案。

输入输出样例

输入

6
1 2 4 1 3 4

输出

4

说明/提示

分别取出 1 1 1 2 2 2 3 3 3 4 4 4 即可。

python代码

#DP,总是有一组数据超时,拿到80%分数
n=int(input())
data=[0]+list(map(int,input().split()))
# print(data)
N=5010
dp=[0]*(n+1)
for i in range(1,n+1):dp[i]=1for j in range(1,i):if data[j]<data[i]:dp[i]=max(dp[i],dp[j]+1)
print(max(dp))#二分,全部通过
import bisectn=int(input())
data=list(map(int,input().split()))#读取数据lis=[]#存放
for num in data:pos=bisect.bisect_left(lis,num)if pos==len(lis):lis.append(num)else:lis[pos]=num
# print(lis)
print(len(lis))

知识点

  1. dp[i]:所有以i结尾的严格上升子序列长度
    • data[j]<data[i],可以放在前面,那么dp[i]=dp[j]+1
    • 但是dp[i]>dp[j]+1,那么dp[i]保持
  2. pos=bisect.bisect_left(lis,num):在lis中找到不大于num的 下标pos

题目4 买不到的数目

小明开了一家糖果店。

他别出心裁:把水果糖包成4颗一包和7颗一包的两种。

糖果不能拆包卖。

小朋友来买糖的时候,他就用这两种包装来组合。

当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。

你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。

大于17的任何数字都可以用4和7组合出来。

本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。

输入格式

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

输出格式

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

数据范围

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

输入样例:
4 7
输出样例:
17

思路

蓝桥杯的数学频率还是很高的,实在不会,就打表找规律
蓝桥杯考点频率
打表找规律
3 2 1
3 5 7
3 7 11
3 8 13
n*m-n-m

python代码

n,m=map(int,input().split())
print(n*m-n-m)

知识点

找规律

题目5 蚂蚁感冒

长 100 厘米的细长直杆子上有 n 只蚂蚁。

它们的头有的朝左,有的朝右。

每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒。

当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。

这些蚂蚁中,有 1 只蚂蚁感冒了。

并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。

输入格式

第一行输入一个整数 n, 表示蚂蚁的总数。

接着的一行是 n 个用空格分开的整数 Xi, Xi 的绝对值表示蚂蚁离开杆子左边端点的距离。

正值表示头朝右,负值表示头朝左,数据中不会出现 0 值,也不会出现两只蚂蚁占用同一位置。

其中,第一个数据代表的蚂蚁感冒了。

输出格式

输出1个整数,表示最后感冒蚂蚁的数目。

数据范围

1<n<50,
0<|Xi|<100

输入样例1:
3
5 -2 8
输出样例1:
1
输入样例2:
5
-10 8 -20 12 25
输出样例2:
3

思路

只考虑什么情况会对结果产生影响?(第一个是感冒的)

  • 第一个蚂蚁向右运动,位于第一个蚂蚁右侧,且向左运动
  • 第一个蚂蚁向左运动,位于第一个蚂蚁左侧,且向右运动

python代码

n=int(input())
data=list(map(int,input().split()))left=0
right=0
ans=1#最初的第一个数据是感冒的for i in range(1,n):if data[i]<0 and abs(data[i])>abs(data[0]):right+=1elif data[i]>0 and abs(data[i])<abs(data[0]):left+=1if data[0]>0:#第一个蚂蚁是向右的,位于右侧且所有向左运动的都会感冒if right>0:ans+=(right+left)else:ans=1
else:if left>0:ans+=(right+left)else:ans=1
print(ans)   

题目6 饮料换购

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。

输入格式

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

输出格式

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

数据范围

0<n<10000

输入样例:
100
输出样例:
149

python代码

n=int(input())
gz=n#盖子初始数量为n
ans=n#最终喝了多少瓶
while gz>=3:bottle,newgz=divmod(gz,3)ans+=bottlegz=bottle+newgz
print(ans)

知识点

  1. 没什么知识点,就是简单模拟题目

相关文章:

【蓝桥杯python研究生组备赛】005 数学与简单DP

题目1 01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数&a…...

Chapter 4-16. Troubleshooting Congestion in Fibre Channel Fabrics

Show FCS Ie Example 4-17 shows the NX-OS command show fcs ie on Cisco MDS switches. 例 4-17 显示了 Cisco MDS 交换机上的 NX-OS 命令 show fcs ie。 Example 4-17 NX-OS command show fcs ie on Cisco MDS switches MDS9706-C# show fcs ie IE List for VSAN: 20 --…...

抖音视频数据获取实战:从API调用到热门内容挖掘

在短视频流量为王的时代&#xff0c;掌握抖音热门视频数据已成为内容运营、竞品分析及营销决策的关键。本文将手把手教你通过抖音开放平台API获取视频详情数据&#xff0c;并提供完整的代码实现及商业化应用思路。 一、抖音API权限申请与核心接口 抖音API需企业资质认证&…...

大白话读懂java对象创建的过程

1. java对象创建流程&#xff08;大白话版&#xff09; 咱们java对象被创建的过程大致如下&#xff0c;即&#xff1a; 在 JVM 中对象的创建&#xff0c;从⼀个 new 指令开始&#xff1a; 首先检查这个指令的参数是否能在常量池中定位到⼀个类的符号引用检查这个符号引用代表…...

Ubutu20.04安装docker与docker-compose

系统&#xff1a;20.04.6 LTS (Focal Fossa)" 1.配置apt源(在/etc/apt/sources.list中输入以下内容) # deb cdrom:[Ubuntu 20.04.6 LTS _Focal Fossa_ - Release amd64 (20230316)]/ focal main restricted deb http://mirrors.aliyun.com/ubuntu/ focal main restricted …...

AI图像理解技术的演进

在CLIP等现代多模态模型出现之前&#xff0c;早期的图生文技术主要依赖人工标注的ImageNet等数据集&#xff0c;但其技术路线与当前方法存在本质差异。 一、传统图生文技术的标注依赖 ImageNet的核心地位 在2012-2020年间&#xff0c;ImageNet的1,400万张人工标注图像&#xff…...

STM32 —— MCU、MPU、ARM、FPGA、DSP

在嵌入式系统中&#xff0c;MCU、MPU、ARM、FPGA和DSP是核心组件&#xff0c;各自在架构、功能和应用场景上有显著差异。以下从专业角度详细解析这些概念&#xff1a; 一、 MCU&#xff08;Microcontroller Unit&#xff0c;微控制器单元&#xff09; 核心定义 集成系统芯片&a…...

aiosignal

文章目录 安装 一、关于 aiosignal Github : https://github.com/aio-libs/aiosignal官方文档&#xff1a;https://aiosignal.aio-libs.org/gitter聊天&#xff1a;https://gitter.im/aio-libs/Lobby许可证 : Apache 2 aiosignal 管理 asyncio 项目中回调的项目。 Signal是已…...

在 VSCode 远程开发环境下使用 Git 常用命令

在日常开发过程中&#xff0c;无论是单人项目还是团队协作&#xff0c;Git 都是版本管理的利器。尤其是在使用 VSCode 连接远程服务器进行代码开发时&#xff0c;Git 不仅能帮助你管理代码版本&#xff0c;还能让多人协作变得更加高效。本文将介绍一些常用的 Git 命令&#xff…...

电脑节电模式怎么退出 分享5种解决方法

在使用电脑的过程中&#xff0c;许多用户为了节省电力&#xff0c;通常会选择开启电脑的节能模式。然而&#xff0c;在需要更高性能或进行图形密集型任务时&#xff0c;节能模式可能会限制系统的性能表现。这时&#xff0c;了解如何正确地关闭或调整节能设置就显得尤为重要了。…...

kubernetes高级实战

一、模拟企业环境进行一个实战部署 [rootmaster node]# kubectl apply -f pod-tomcat.yaml pod/tomcat-test created [rootmaster node]# kubectl get pods NAME READY STATUS RESTARTS AGE tomcat-test 2/2 Running 0 2s [rootmaster node]…...

【Java】——程序逻辑控制(构建稳健代码的基石)

&#x1f381;个人主页&#xff1a;User_芊芊君子 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 &#x1f50d;系列专栏&#xff1a;【Java】内容概括 文章目录&#xff1a; 一.顺序结构二.分支结构1.if 语句1.1 语法格式11.2 语法格式21.3 语法格式3 …...

QT编程之PCM音频处理

一、高级播放接口&#xff08;未压缩编码的音频文件&#xff09; ‌QMediaPlayer‌ 支持MP3/WMA等压缩格式及网络流媒体播放&#xff0c;集成媒体控制&#xff08;播放/暂停/进度调节&#xff09;需设置QAudioOutput指定输出设备&#xff0c;支持播放速度调节&#xff08;setPl…...

卫星互联网智慧杆:开启智能城市新时代​

哇哦&#xff01;在当下这个数字化浪潮正以雷霆万钧之势席卷全球的超酷时代&#xff0c;智慧城市建设已然成为世界各国你追我赶、竞相发力的核心重点领域啦&#xff01;而咱们的卫星互联网智慧杆&#xff0c;作为一项完美融合了卫星通信与物联网顶尖技术的创新结晶&#xff0c;…...

Numpy broadcasting规则

Numpy的broadcast操作是为了将两个不同形状的数组&#xff0c;通过一系列规则&#xff0c;变换成形状相同的数组&#xff0c;从而使得它们之间可以进行按元素进行的计算。 Broadcasting的机制并不复杂&#xff0c;只要记住以下几条规则就可以了&#xff1a; 1. 顺序。首先&am…...

掌握 Shopee 商品数据:用爬虫解锁无限商机

在电商的浩瀚宇宙中&#xff0c;Shopee 宛如一颗璀璨星辰&#xff0c;吸引着无数卖家与买家在此汇聚。对于电商从业者、市场调研人员或是数据分析师而言&#xff0c;获取 Shopee 店铺的商品信息就如同掌握了开启财富之门的钥匙。而爬虫技术&#xff0c;正是帮助我们高效获取这些…...

Qt-QChart实现折线图

一、介绍场景 动态查看数据变化&#xff0c;或者了解数据发展趋势&#xff0c;让数据可以形象直观展现出来&#xff0c;这里推荐使用折线图的方式展现&#xff0c;本文抛砖引玉&#xff0c;简单实现一个实例&#xff0c;效果图如下&#xff1a; 二、实现步骤 1、charts组件 …...

取消Win10锁屏界面上显示的天气、市场和广告的操作

要取消Win10锁屏界面上显示的天气、市场和广告&#xff0c;您可以按照以下步骤操作&#xff1a; 方法一&#xff1a;更改锁屏界面设置 打开“设置”&#xff1a; 点击“开始”菜单&#xff0c;然后点击齿轮状的“设置”图标。 进入“个性化”&#xff1a; 在“设置”窗口中&a…...

IoT设备测试:从协议到硬件的全栈验证体系与实践指南

一、引言&#xff1a;IoT技术浪潮下的质量挑战 根据IDC预测&#xff0c;到2027年全球IoT设备数量将突破290亿台&#xff0c;涵盖智能家居、工业物联网&#xff08;IIoT&#xff09;、智慧城市、车联网等场景。然而&#xff0c;IoT系统的复杂性远超传统嵌入式设备——硬件异构性…...

大白话详细解读React框架的diffing算法

1. Diffing 算法是什么&#xff1f; Diffing 算法是 React 用来比较虚拟 DOM&#xff08;Virtual DOM&#xff09;树的一种算法。它的作用是找出前后两次渲染之间的差异&#xff08;diff&#xff09;&#xff0c;然后只更新这些差异部分&#xff0c;而不是重新渲染整个页面。 …...

自然语言处理入门

第一章 自然语言处理入门 1 什么是自然语言处理 【什么是人工智能&#xff0c;分别对应哪几个领域】 AI是模仿甚至超越人的某项机能&#xff0c;NLP、CV、ASR NLP是机器理解并生成人类语言2 自然语言处理的发展简史 1950 -- 图灵提出“机器能思考吗”&#xff0c;划时代性的…...

Arduino示例代码讲解:Pitch follower 跟随

Arduino示例代码讲解:Pitch follower 跟随 Pitch follower代码功能代码逐行解释1. 注释部分功能:硬件连接:2. `setup()` 函数3. `loop()` 函数硬件连接**扬声器连接**:**光敏电阻连接**:**Arduino板**:运行结果修改建议视频讲解Pitch follower 这段代码是一个Arduino示例…...

从TouchDriver Pro到Touchdriver G1,Weart触觉手套全系解析:XR交互的“真实触感”如何实现?

Weart旗下的Touchdriver Pro触觉手套和Touchdriver G1触觉手套&#xff0c;凭借其技术创新&#xff0c;为用户带来了全新的触觉体验。Touchdriver Pro触觉手套通过多模态触觉反馈技术&#xff0c;提供力反馈、纹理渲染和温度提示&#xff0c;让用户在虚拟环境中感受到真实的触觉…...

华为OD机试-阿里巴巴找黄金宝箱(I)-双指针(Java 2023 B卷 100分)

题目描述 阿里巴巴在去砍柴的路上发现了强盗集团的藏宝地,藏宝地有编号从 0 到 N 的箱子,每个箱子上贴有一个数字。黄金宝箱满足排在它之前的所有箱子数字和等于排在它之后的所有箱子数字和。第一个箱子左边部分的数字和定义为 0;最后一个宝箱右边部分的数字和定义为 0。请…...

ubuntu20如何升级nginx到最新版本(其它版本大概率也可以)

前言&#xff1a; Nginx非常常用&#xff0c;所以在网络安全方面备受“关注”。其漏洞非常多&#xff0c;要经常保持软件更新版本才能更好的保证安全。但是Ubuntu官网适配nginx非常慢&#xff0c;所以nginx官方也会推出针对主流Linux操作系统的包管理工具安装方式。 步骤&…...

排序算法实现:插入排序与希尔排序

目录 一、引言 二、代码整体结构 三、宏定义与头文件 四、插入排序函数&#xff08;Insertsort&#xff09; 函数作用 代码要点分析 五、希尔排序函数&#xff08;ShellSort&#xff09; 函数作用 代码要点分析 六、打印数组函数&#xff08;PrintSort&#x…...

UDP协议原理

UDP协议原理 本篇介绍 在前面使用UDP编程时已经基本了解了UDP的工作模式&#xff0c;也知道了UDP有三个特点&#xff1a; 无连接不可靠面向数据报 但是当时并没有具体谈论为什么UDP有以上三个特点&#xff0c;基于这个原因&#xff0c;本篇就会针对这三个原因进行介绍 UDP…...

EtherCAT转Modbus网关如何在倍福plc组态快速配置

EtherCAT转Modbus网关如何在倍福plc组态快速配置 在工业控制领域&#xff0c;EtherCAT和Modbus是两种常见的总线通信协议。EtherCAT以其高速的数据传输和灵活的网络配置被广泛应用于高性能自动化控制系统中&#xff0c;而Modbus则因其简单、稳定且兼容性强而被许多设备所支持。…...

如何设计大模型意图识别?

环境&#xff1a; 大模型 问题描述&#xff1a; 如何设计大模型意图识别&#xff1f; 解决方案&#xff1a; 1. 意图识别定义与核心任务 定义&#xff1a;意图识别&#xff08;Intent Recognition&#xff09;是从用户输入&#xff08;文本、语音等&#xff09;中解析其核…...

FPGA设计中时间单位科普

FPGA设计中时间单位主要有秒s&#xff0c;毫秒ms&#xff0c;微秒us&#xff0c;纳秒ns&#xff0c;皮秒ps&#xff0c; 使用秒s作为单位时一定要谨慎&#xff0c;因为秒s对于FPGA来说是一个很大的单位。FPGA的时钟周期通常是20ns左右&#xff0c;1秒意味着需要等待50000000个…...