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

python 基础知识点(蓝桥杯python科目个人复习计划63)

今日复习内容:做题

例题1:蓝桥骑士

问题描述:

小蓝是蓝桥王国的骑士,他喜欢不断突破自我。

这天蓝桥国王给他安排了N个对手,他们的战力值分别为a1,a2,...,an,且按顺序阻挡在小蓝的前方。对于这些对手小蓝可以选择挑战,也可以选择避战。

身为高傲的骑士,小蓝从不走回头路,且只愿意挑战战力值越来越高的对手。

请你算算小蓝最多会挑战多少名对手?

输入描述:

输入第一行包括一个整数N,表示对手的个数;

第二行包括N个整数:a1,a2,...an,表示每个骑士的战力值;

1 <= N <= 3*10^5,1 <= ai <= 10^9。

输出描述:

输出一行整数表示答案。

参考答案:

import bisect
n = int(input())
a = list(map(int,input().split()))
q = [a[0]]
for i in range(1,n):ind = bisect.bisect_left(q,a[i])if ind == len(q):q.append(a[i])else:q[ind] = a[i]
print(len(q))

运行结果:

 

以下是我对此题的理解:

首先,从输入中获取对手的个数和每个对手的战力值;

创建一个空列表q,用于存储已经被挑战过的对手的战力值;

从第一个对手开始,遍历到最后一个对手,依次进行以下操作:

使用二分查找在列表q中找到小于等于当前对手战力值的最大值的索引;

如果找到的索引等于q的长度,说明当前对手的战力值大于当前已经挑战过的所有对手的战力值,将当前对手的战力值加入q中,否则,说明当前对手的战力值可以替换q中某个已经挑战过的对手的战力值,最后输出q的长度就可以了。


例题2:最长公共子序列

问题描述:

给定一个长度为N的数组a和一个长度为M的数组b,请你求出它们的最长公共子序列。

输入描述:

输入第一行包括两个整数N和M,分别表示数组a的长度和数组b的长度。

第二行输入包含N个整数a1,a2,...,an;

第三行包含M个整数b1,b2,...bm;

1 <= N,M <= 10^3,1 <= ai,bi <= 10^9

输出描述:

输出一行整数表示答案

参考答案:

a,b = map(int,input().split())
A = [0] + list(map(int,input().split()))
B = [0] + list(map(int,input().split()))
f = [[0]*(b + 1)for i in range(a + 1)]
for i in range(1,a + 1):for j in range(1,b + 1):if A[i] == B[j]:f[i][j] = f[i-1][j-1] + 1else:f[i][j] = max(f[i-1][j],f[i][j-1])print(f[a][b])

运行结果:

 

这道题用的是动态规划,比较简单,我就不做过多解释了。


例题3:倒水

问题描述:

小秋家里来了n位客人,编号为1,2,...,n,现在小秋要给每个客人倒水。

每个客人都有一个满意度,对于第i个客人,满意度是这样定义的:

如果小秋给第i个客人倒了ai毫升水,客人的满意度为bi;如果小秋给第i个客人倒了ci(ci > ai)毫升水,客人的满意度为di;

如果小秋给第i为客人倒的水不足ai毫升(也可以为0),客人的满意度为ei。

现在小秋有m毫升水,请问他要怎么倒水,才能让所有客人的满意度之和最大呢?你只需要求出所有客人的满意度之和的最大值。

输入描述:

第一行输入两个正整数n和m,表示客人的数量和小秋所拥有的水的体积;

接下来n行,每行5个整数ai,bi,ci,di,ei,第i行表示给第i位客人倒了ai毫升水的满意度为bi,给第i位客人倒了ci毫升水的满意度为di,倒水不足ai毫升水的满意度为ei。

输出格式:

输出仅一行,包含一个整数,表示所有课满意度之和的最大值。

参考答案:

import os
import sys
n,m = map(int,input().split())
f = [[0]*(m + 1) for i in range(n + 1)]
for i in range(1,n + 1):a,b,c,d,e = map(int,input().split())for j in range(m + 1):f[i][j] = f[i - 1][j] + eif j >= a:f[i][j]  = max(f[i][j],f[i - 1][j - a] + b)if j >= c:f[i][j] = max(f[i][j],f[i - 1][j - c] + d)
print(f[n][m])

运行结果:

 

以下是我对此题的理解:

我就不写成文字了,我把注释过的代码粘贴过来:

import os
import sys# 输入客人数量n和水的体积m
n, m = map(int, input().split())# 初始化动态规划数组f,f[i][j]表示考虑前i个客人,倒水体积为j时的最大满意度之和
f = [[0] * (m + 1) for i in range(n + 1)]# 遍历每位客人
for i in range(1, n + 1):# 获取当前客人的倒水参数a, b, c, d, e = map(int, input().split())# 遍历可能的倒水体积for j in range(m + 1):# 初始化当前状态为上一个状态加上当前客人倒水不足ai毫升时的满意度eif[i][j] = f[i - 1][j] + e# 如果当前剩余水量j大于等于ai,即可以倒ai毫升水给当前客人if j >= a:# 尝试用当前水量j减去ai毫升水,然后加上当前客人倒水ai毫升时的满意度bi,与之前状态f[i-1][j-ai]相比较,取最大值f[i][j] = max(f[i][j], f[i - 1][j - a] + b)# 如果当前剩余水量j大于等于ci,即可以倒ci毫升水给当前客人if j >= c:# 尝试用当前水量j减去ci毫升水,然后加上当前客人倒水ci毫升时的满意度di,与之前状态f[i-1][j-ci]相比较,取最大值f[i][j] = max(f[i][j], f[i - 1][j - c] + d)# 输出考虑了所有客人和水量为m时的最大满意度之和
print(f[n][m])

 例题4:盗墓分赃2

问题描述:

在一个探险者的团队中,小明和小红是合伙的盗墓贼。

他们成功盗取了一座古墓中的宝藏,其中包括n件不同重量的宝贵文物和黄金,第i件宝藏的重量为ai。

现在,他们希望公平地分配这些宝藏,使得小明所分得的宝藏的总重量等于小红所分得的宝藏的总重量。

请检查是否存在这样的分配方案,需要注意的是,不能对宝藏进行切割来平分重量,只能整个宝藏进行分配。

输入格式:

第一行包含一个正整数n,表示有n件宝藏;

接下来n行,第i行表示第i件宝藏的重量ai。

输出格式:

如果能公平分配就输出yes,否则输出no。

参考答案:

def work():n = int(input())aa = [0] + [int(input())for i in range(n)]tot = sum(aa)if tot % 2 != 0:print('no')returntot //= 2f = [[False]*(tot + 1) for i in range(n + 1)]f[0][0] = Truefor i in range(1,n + 1):for j in range(tot + 1):f[i][j] = f[i - 1][j]if j >= aa[i]:f[i][j] = f[i - 1][j - aa[i]]print('yes')if f[n][tot] else print('no')
if __name__ == '__main__':work()

运行结果:

 

 第一种做法有一个样例显示超时了,所以我优化了一下。

第二种做法:

def work():n = int(input())aa = [0] + [int(input())for i in range(n)]tot = sum(aa)if tot % 2 != 0:print('no')returntot //= 2f = [False]*(tot + 1)f[0] = Truefor i in range(1,n + 1):for j in range(tot,aa[i] - 1,-1):f[j] = f[j - aa[i]]print('yes')if f[tot] else print('no')
if __name__ == '__main__':work()

以下是我对此题的理解:

我用代码注释来表达我的思想:

def work():# 输入宝藏的数量nn = int(input())# 获取每件宝藏的重量并存储在列表aa中aa = [0] + [int(input()) for i in range(n)]# 计算所有宝藏的总重量tot = sum(aa)# 如果总重量为奇数,则无法公平分配,输出'no'并返回if tot % 2 != 0:print('no')return# 将总重量除以2,得到每个人应分得的宝藏的总重量tot //= 2# 创建一个布尔型数组f,f[i]表示是否存在一种方案使得宝藏的总重量为if = [False] * (tot + 1)# 初始化f[0]为True,表示当没有宝藏时,总重量为0f[0] = True# 遍历每件宝藏for i in range(1, n + 1):# 从总重量到当前宝藏重量之间的位置开始遍历for j in range(tot, aa[i] - 1, -1):# 如果存在一种分配方案使得总重量为j的话,那么也一定存在一种分配方案使得总重量为j + 宝藏重量f[j] = f[j - aa[i]]# 判断是否存在一种分配方案使得总重量为tot,如果存在,则输出'yes',否则输出'no'print('yes') if f[tot] else print('no')if __name__ == '__main__':work()

OK,今天状态不错,这几个题还好,下一篇继续! 

相关文章:

python 基础知识点(蓝桥杯python科目个人复习计划63)

今日复习内容&#xff1a;做题 例题1&#xff1a;蓝桥骑士 问题描述&#xff1a; 小蓝是蓝桥王国的骑士&#xff0c;他喜欢不断突破自我。 这天蓝桥国王给他安排了N个对手&#xff0c;他们的战力值分别为a1,a2,...,an&#xff0c;且按顺序阻挡在小蓝的前方。对于这些对手小…...

IAB视频广告标准《数字视频和有线电视广告格式指南》之 简介、目录及视频配套广告 - 我为什么要翻译介绍美国人工智能科技公司IAB系列(2)

写在前面 谈及到中国企业走入国际市场&#xff0c;拓展海外营销渠道的时候&#xff0c;如果单纯依靠一个小公司去国外做广告&#xff0c;拉渠道&#xff0c;找代理公司&#xff0c;从售前到售后&#xff0c;都是非常不现实的。我们可以回想一下40年前&#xff0c;30年前&#x…...

Python网络基础爬虫-python基本语法

文章目录 逻辑语句if,else,elifforwhile异常处理 函数与类defpassclass 逻辑语句 熟悉C/C语言的人们可能很希望Python提供switch语句&#xff0c;但Python中并没有这个关键词&#xff0c;也没有这个语句结构。但是可以通过if-elif-elif-…这样的结构代替&#xff0c;或者使用字…...

产品推荐 - 基于星嵌 OMAPL138+国产FPGA的DSP+ARM+FPGA三核开发板

1 评估板简介 基于TI OMAP-L138&#xff08;定点/浮点DSP C674xARM9&#xff09; FPGA处理器的开发板&#xff1b; OMAP-L138是TI德州仪器的TMS320C6748ARM926EJ-S异构双核处理器&#xff0c;主频456MHz&#xff0c;高达3648MIPS和2746MFLOPS的运算能力&#xff1b; FPGA…...

【微服务学习笔记(一)】Nacos、Feign、Gateway基础使用

【微服务学习笔记&#xff08;一&#xff09;】Nacos、Feign、Gateway基础使用 总览Nacos安装配置Nacos注册中心服务多级存储模型负载均衡规则环境隔离 配置管理配置拉取配置热更新多服务共享配置 Feign远程调用配置性能优化Fegin使用 统一网关Gateway搭建网关路由断言工厂&…...

使用maven打生产环境可执行包

一、程序为什么要打包 程序打包的主要目的是将项目的源代码、依赖库和其他资源打包成一个可执行的文件或者部署包&#xff0c;方便程序的发布和部署。以下是一些打包程序的重要理由&#xff1a; 方便部署和分发&#xff1a;打包后的程序可以作为一个独立的实体&#xff0c;方便…...

springboot+ssm基于vue.js的客户关系Crm管理系统

系统包含两种角色&#xff1a;管理员、用户&#xff0c;主要功能如下。 ide工具&#xff1a;IDEA 或者eclipse 编程语言: java 数据库: mysql5.7 框架&#xff1a;ssmspringboot都有 前端&#xff1a;vue.jsElementUI 详细技术&#xff1a;springbootSSMvueMYSQLMAVEN 数据库…...

github 中的java前后端项目整合到本地运行

前言: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…...

分布式ID(7):Zookeeper实现分布式ID生成

1 原理 实现方式有两种,一种通过节点,一种通过节点的版本号 节点的特性持久顺序节点(PERSISTENT_SEQUENTIAL) 他的基本特性和持久节点是一致的,额外的特性表现在顺序性上。在ZooKeeper中,每个父节点都会为他的第一级子节点维护一份顺序,用于记录下每个子节点创建的先后顺序…...

钉钉小程序 - - - - - 如何通过一个链接打开小程序内的指定页面

方式1 钉钉小程序 scheme dingtalk://dingtalkclient/action/open_mini_app?miniAppId123&pagepages%2Findex%2Findex%3Fx%3D%25E4%25B8%25AD%25E6%2596%2587 方式2 https://applink.dingtalk.com/action/open_mini_app?type2&miniAppIdminiAppId&corpIdcorpId&…...

Java代码基础算法练习---2024.3.14

其实这就是从我学校的资源&#xff0c;都比较基础的算法题&#xff0c;先尽量每天都做1-2题&#xff0c;练手感。毕竟离我真正去尝试入职好的公司&#xff08;我指的就是中大厂&#xff0c;但是任重道远啊&#xff09;&#xff0c;仍有一定的时间&#xff0c;至少要等我升本之后…...

3月14日,每日信息差

&#x1f396; 素材来源官方媒体/网络新闻 &#x1f384; 5.5G通信网络在海南投入商用&#xff0c;较5G提升10倍 &#x1f30d; 国务院批复同意&#xff0c;珠海港口岸将整合并扩大开放 &#x1f30b; 同有科技&#xff1a;正在研究新型磁电存储技术 &#x1f381; 美国折扣零售…...

学习Android的第二十八天

目录 Android Service (服务) 线程 Service (服务) Service 相关方法 Android 非绑定 Service startService() 启动 Service 验证 startService() 启动 Service 的调用顺序 Android 绑定 Service bindService() 启动 Service 验证 BindService 启动 Service 的顺序 …...

C++等级3题

鸡兔同笼 #include<bits/stdc.h> using namespace std; void f(int n); int n; int main() {cin>>n;int x0;int ma-1;int mi1000;for(int i0;i<n;i){for(int j0;j<n;j){if(i*2j*4n){x1;mamax(ma,ij);mimin(mi,ij);}}}if(x1){cout<<mi<<" &…...

python中列表常用函数

列表list相关函数 列表相关函数 列表相关函数 汇总&#xff1a;. 列表: 1.list() 方法用于将序列&#xff08;元组&#xff0c;集合&#xff0c;字符串等&#xff09;转换为列表。 用法&#xff1a;list( seq ) #seq为序列&#xff1a;元组 集合 字符串等 2.列表定义&a…...

小程序连接蓝牙

小程序 蓝牙功能 1.授予蓝牙权限2.蓝牙初始化3.监听寻找新设备4.搜索新设备5.建立连接⭐⭐⭐⭐⭐⭐⭐6.监听蓝牙低功耗连接状态改变事件8.监听特征值变化9.发送数据 1.授予蓝牙权限 //1.蓝牙授权 const authBlue (callback, initApp) > {app initApp;//鉴定是否授权蓝牙w…...

基于Python的pygame库的五子棋游戏

安装pygame pip install pygame五子棋游戏代码 """五子棋之人机对战"""import sys import random import pygame from pygame.locals import * import pygame.gfxdraw from collections import namedtupleChessman namedtuple(Chessman, Name…...

【Java基础】IO流(二)字符集知识

目录 字符集知识 1、GBK字符集 2、Unicode字符集&#xff08;万国码&#xff09; 3、乱码 4、Java中编码和解码的方法 字符集知识 字符&#xff08;Character&#xff09;&#xff1a;在计算机和电信技术中&#xff0c;一个字符是一个单位的字形、类字形单位或符号的基本信…...

TimescaleDB 开源时序数据库

文章目录 1.TimescaleDB介绍2.Hypertable 和 chunk3.Hypertable4.Hypertable操作 开源中间件 # TimescaleDBhttps://iothub.org.cn/docs/middleware/ https://iothub.org.cn/docs/middleware/timescale/timescale-summary/1.TimescaleDB介绍 TimescaleDB是基于PostgreSQL数据…...

如何保证Redis和数据库数据一致性

缓存可以提升性能&#xff0c;减轻数据库压力&#xff0c;在获取这部分好处的同时&#xff0c;它却带来了一些新的问题&#xff0c;缓存和数据库之间的数据一致性问题。 想必大家在工作中只要用了咱们缓存势必就会遇到过此类问题 首先我们来看看一致性&#xff1a; 强一致性…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...