蓝桥杯 之 第27场月赛总结

文章目录

  • 习题
    • 1.抓猪拿国一
    • 2.蓝桥字符
    • 3.蓝桥大使
    • 4.拳头对决
    • 5.未来竞赛
    • 6.备份比赛数据

习题

比赛地址

1.抓猪拿国一

在这里插入图片描述

  • 十分简单的签到题
print(sum(list(range(17))))

2.蓝桥字符

在这里插入图片描述

  • 常见的字符匹配的问题,是一个二维dp的问题,转化为对应的动态规划求解

力扣的相似题目

可以关注灵神的讲解

import os
import sys# 请在此输入您的代码# 动态规划的问题
s = input()
n = len(s)
# 定义dp[i][j]表示为lan [:i] 在 s[:j]中出现的次数
dp = [[0]*(n+1) for _ in range(4)]
s1 = "lan"
# 初始化dp[0][i] = 1
for i in range(n+1):dp[0][i] = 1
for i in range(3):for j in range(n):if s1[i] == s[j]:dp[i+1][j+1] = dp[i+1][j] + dp[i][j]else:dp[i+1][j+1] = dp[i+1][j]
print(dp[-1][-1])
  • 另一种思路,使用前缀的思路

在这里插入图片描述

3.蓝桥大使

在这里插入图片描述
在这里插入图片描述

  • 考察的知识点是:排序+贪心
  • 可以看到最后总共求解的是总共的最大值,那么我们可以先安排其中一方先选,另一方后选
  • 在这里,我们让小蓝先选,那么小蓝应该选哪些元素?贪心化的思路:选对应的下标中A[i]-B[i]差距最大的那些元素,这样的话,才可以发挥小蓝这边的优势
n = int(input())
A,B = [],[]
cha = []
for i in range(n):a,b = map(int,input().split())A.append(a)B.append(b)cha.append([a-b,i])
# 贪心化做法,排序,将A-B的结果作差,由小蓝先选
# 降序排序
ans = 0
cha.sort(reverse=True)
for j in range(n):if j <= n//2 -1:ans += A[cha[j][1]]else:ans += B[cha[j][1]]
print(ans)

4.拳头对决

在这里插入图片描述
在这里插入图片描述

  • 题目有坑:不是1v1,并且蓝队和红队的对应的A,B要区别好
  • 题目的问题就转化为这个如何在一个区间内,求解出小于A[i]的B[j]的个数?,在这里,就用到这个树状数组这一个工具

推荐大家先完成力扣的几个相关的知识,先感受一下树状数组的功能与作用

相关的博客

  • 要学会适应在大范围的时候,离散化这个数值再使用这个树状数组,并且到底求解的是正序对还是逆序对,对应的排序是升序还是降序得区分好
  • 一般都要使用离散化,开的Tree的大小就得是离散化之后N的大小
N = int(input())
# 蓝队的是 A
A = list(map(int, input().split()))
# 红队的是B
B = list(map(int, input().split()))A.sort()
vis = set()
for i in A:vis.add(i)
for j in B:vis.add(j)
C = sorted(vis)
mat = {v:i+1 for i,v in enumerate(C)}
tree = [0]*(len(C)+1)
def update(i,val):while i < len(tree):tree[i] += vali += i & -i 
def query(i):tmp = 0while i > 0:tmp += tree[i]i -= i & -i return tmp
ans = 0
for i in range(N):update(mat[B[i]],1)rank = mat[A[i]]ans += query(rank-1)
print(ans)

5.未来竞赛

在这里插入图片描述

在这里插入图片描述

  • 这题的考点在于,由于每一个国家都是独立的,所以考虑使用乘法定理,我们按照国家将选手分类,然后得出每一个国家的方案数,最后再使用乘法定理乘起来,减去全为0的情况
  • 对于一个国家来说,至多选两个,那么就是一个也不选+只选两个+选两个距离<=D的
from collections import defaultdict
# 直接暴力求解
N,D = map(int,input().split())
A = list(map(int,input().split()))
mod = 10**9 + 7
# 先把这个选手按照国家进行分类
store = defaultdict(list)
for i,c in enumerate(A):store[c].append(i)
ans = 1# 使用乘法定理进行求解
for country in store:tmp = 1 + len(store[country])if len(store[country]) > 1:# 开始计算这个a = store[country]n = len(a)for i in range(n-1):for j in range(i+1,n):if abs(a[j]-a[i])<=D:tmp += 1ans = ans * tmp % mod
print(ans-1)
  • 上面的代码只能通过90%,总的来说,时间复杂度较高,在于这个求解选两个方案的时候,使用了两层循环,那么是否可以优化?可以,使用排序+二分即可

  • 说到二分,这里还得学会使用python 中现成的bisect模块,区分其中的bisect_left和bisect_right的用法,以及他们对应的四个参数的设置

  • 使用bisect_right

from collections import defaultdict
import bisectmod = 10 ** 9 + 7
n, dd = map(int, input().split())
a = list(map(int, input().split()))
d = defaultdict(list)for i in range(n):  # 存每个国家的位置d[a[i]].append(i)ans = 1
for i in d.keys():  # 每个国家单独处理cnt = len(d[i]) + 1  # 空集情况 + 装1个监控的情况for j in range(len(d[i])):# cnt = (cnt + check(d[i], j)) % mod# cnt = (cnt + bisect_right(d[i],d[i][j]+dd,lo=j)-j-1) % modtarget = d[i][j] + dd pos = bisect.bisect_right(d[i], target, lo=j)cnt += pos - j - 1ans = (ans * cnt) % mod
print(ans - 1)  # 减去全部空集的一种情况
  • 使用bisect_left
from collections import defaultdict
import bisectmod = 10 ** 9 + 7
n, dd = map(int, input().split())
a = list(map(int, input().split()))
d = defaultdict(list)for i in range(n):  # 存每个国家的位置d[a[i]].append(i)ans = 1
for i in d.keys():  # 每个国家单独处理cnt = len(d[i]) + 1  # 空集情况 + 装1个监控的情况for j in range(len(d[i])):target = d[i][j] + dd + 1pos = bisect.bisect_left(d[i], target, lo=j)cnt += pos - j - 1ans = (ans * cnt) % mod
print(ans - 1)  # 减去全部空集的一种情况

6.备份比赛数据

在这里插入图片描述
在这里插入图片描述

  • 典型的二分问题,因为这个 每天的备份时间与总的备份天数存在一个单调的关系
import os
import sys
# 请在此输入您的代码
n, m = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
# 二分
def check(x):cnt = 0pre = 0for i,j in zip(a[:-1], b[:-1]):if pre<i:pre = xcnt += 1pre-=iwhile pre-j<0:pre += xcnt += 1pre-=jif pre<a[-1]:cnt+=1return cnt <= m
l = max(a)
r = 3600
ans = -1
while l <= r:mid = (l + r) // 2if check(mid):ans = midr = mid - 1else:l = mid + 1
print(ans)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38959.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ambari、Bigtop源码编译最新支持情况汇总

以下是目前的版本情况 支持了绝大部分的组件编译及安装 版本组件名称组件版本env 版本v1.0.5Ozone1.4.11.0.5Impala4.4.11.0.5Nightingale7.7.21.0.5Categraf0.4.11.0.5VictoriaMetrics1.109.11.0.5Cloudbeaver24.3.31.0.5Celeborn0.5.31.0.5v1.0.4Doris2.1.71.0.4v1.0.3Phoen…

仅靠prompt,Agent难以自救

Alexander的观点很明确&#xff1a;未来 AI 智能体的发展方向还得是模型本身&#xff0c;而不是工作流&#xff08;Work Flow&#xff09;。还拿目前很火的 Manus 作为案例&#xff1a;他认为像 Manus 这样基于「预先编排好的提示词与工具路径」构成的工作流智能体&#xff0c;…

【Docker系列一】Docker 简介

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Sqoop 常用命令

Sqoop 是用于在 Hadoop 和关系型数据库&#xff08;如 MySQL、Oracle 等&#xff09;之间高效传输数据的工具。以下是常用的 Sqoop 命令及示例&#xff1a; CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY, -- 自增主键&#xff0c;用于唯一标识每一行name VAR…

连续型随机变量及其分布

连续型随机变量 数学公式可以看作一门精确描述事物的语言&#xff0c;比语言尤其是汉语的模糊性精确多了&#xff01;离散型数据的处理可以通过枚举和相加进行处理。而连续型数据则没有办法这样处理。我们必须要通过函数和取值区间还有微积分计算。 &#xff3b;定义1&#x…

PostgreSQL_数据使用与日数据分享

目录 前置&#xff1a; 1 使用 1.1 获取前复权因子 1.2 查询股票的纵向数据 1.3 查询股票的横向数据 2 日数据分享&#xff08;截止至&#xff1a;2025-03-21&#xff09; 总结 前置&#xff1a; 本博文是一个系列。在本人“数据库专栏”-》“PostgreSQL_”开头的博文。…

Rocky9.5基于sealos快速部署k8s集群

首先需要下载 Sealos 命令行工具&#xff0c;sealos 是一个简单的 Golang 二进制文件&#xff0c;可以安装在大多数 Linux 操作系统中。 以下是一些基本的安装要求&#xff1a; 每个集群节点应该有不同的主机名。主机名不要带下划线。 所有节点的时间需要同步。 需要在 K8s …

qt实现一个简单http服务器和客户端

一、功能简介 服务器&#xff1a; 登录功能、下载文件功能 客户端&#xff1a; 登录功能、下载文件功能、上传成绩功能 二、服务器代码 //HttpServer.h #ifndef HTTPSERVER_H #define HTTPSERVER_H#include <QMainWindow> #include <QTcpSocket> #include <QTc…

基于Python+Django的旅游管理系统

项目介绍 PythonDjango旅游管理系统 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 - 前台功能包括&#xff1a;首页、景点管理、门票管理、旅游资讯、在线反馈、。 - 后台功能包…

用数组模拟循环队列

设计一种循环队列&#xff0c;线性数据结构&#xff0c;其操作表现为 FIFO(先进先出)原则且队尾被连接在队首之后形成一个循环&#xff0c;称作“环形缓冲器” 循环队列的好处是可以利用这个队列之前使用过的空间&#xff0c;但是他的空间大小是固定的 循环队列我们使用单链表…

maven为什么发生依赖冲突?怎么解决依赖冲突?

maven为什么发生依赖冲突&#xff1f;怎么解决依赖冲突&#xff1f; 我们在开发的时候&#xff0c;偶尔会遇到依赖冲突的时候&#xff0c;一般都是NoClassDefFoundError、ClassNotFoundException、NoSuchMethodError。打开搜索框又发现有这个类&#xff0c;明明就是引入进来了&…

从国家能源到浙江交通投资,全息技术在能源交通领域的创新应用

一、3D全息技术行业应用参数及设计制作要求 全息投影 全息投影技术通过激光器、全息片等设备&#xff0c;将物体的三维信息记录下来&#xff0c;并在特定条件下再现。应用参数包括投影距离、投影面积、投影亮度等。设计制作要求&#xff1a;高清晰度、高亮度、低噪音、稳定性好…

Adobe After Effects 操作

Adobe After Effects &#xff08;AE&#xff09;可以实现将多个元素进行合成&#xff0c;实现特殊效果。AE的项目文件是aep&#xff0c;可以将素材、层、效果等一切信息&#xff0c;保存在这个项目文件中。 AE的原理&#xff0c;和PS的原理非常类似。 操作界面 操作界面如…

Flutter使用自签证书打包ipa

在 Flutter 中使用自签证书打包 IPA 文件&#xff0c;可以通过以下步骤完成&#xff1a; 1. 准备自签证书 方式一 生成自签证书&#xff1a; 打开 钥匙串访问 应用。选择 证书助理 > 创建证书。按照提示填写证书信息&#xff0c;选择证书类型为 代码签名&#xff0c;并保存…

三.Go的第一个程序hello.go

新建hello.go,代码如下 package mainimport "fmt"func main() {fmt.Println("hello world") }编译hello.go 控制台终端为hello.go同级目录 执行 go build hello.go编译成功同级目录下生成 同名exe文件 也可以直接执行 go run hello.go解释如下 一 .…

WebLogic中间件常见漏洞

一、后台弱⼝令GetShell 1.环境搭建 cd vulhub-master/weblogic/weak_password docker-compose up -d 2.访问网站并登陆后台 /console/login/LoginForm.jsp 默认账号密码&#xff1a;weblogic/Oracle123 3.点击部署&#xff0c;点击安装&#xff…

【Unity3D】摄像机适配场景以及Canvas适配

目录 宽度不变策略 高度不变策略 宽度不变策略 开发分辨率 750*1334 (宽高比:0.56) 真机分辨率 1170*2532 (宽高比:0.46) 真机宽高比<开发宽高比&#xff0c;采用宽度不变策略 理由&#xff1a;小于代表真机高度比开发高度更大&#xff0c;因此不需要担心高度上…

Mysql笔记

目录 sql的DML 增加语句 删除语句和truncate 更新语句 replace语句 select查询语句 简单的查询 等值判断 不等判断 逻辑运算符 查询时的别名使用 常见的条件查询 分组 分组后筛选 结果排序 分页功能​​​​​​​ 分表 外键和多表关联 表与表之间的关联关系…

用Selenium+lxml库完成淄博链家网数据的爬取

一、淄博链家二手房网站地址 urlhttps://zb.lianjia.com/ershoufang/ 二、基本知识点总结 这个代码是一个使用 Selenium 和 lxml 库编写的网络爬虫&#xff0c;用于从链家网&#xff08;Lianjia&#xff09;的二手房列表页面中提取房屋信息。 代码结构 导入库&#xff1a; …

【MySQL笔记】数据类型

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;MySQL &#x1f339;往期回顾&#x1f339;&#xff1a;【MySQL笔记】库操作与表操作 &#x1f516;流水不争&#xff0c;争的是滔滔不 一、数据类型分类二、tinyint类…