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

第十五届蓝桥杯大赛软件赛省赛Python 大学 B 组试做(下)【本期题单: 缴纳过路费, 纯职业小组】

本期题单:缴纳过路费,纯职业小队

请添加图片描述

文章目录

  • 缴纳过路费
    • 题目
    • 思路分析
    • 代码
  • 纯职业小组
    • 题目
    • 思路分析
  • 感谢大伙观看,别忘了三连支持一下
  • 大家也可以关注一下我的其它专栏,同样精彩喔~
  • 下期见咯~

缴纳过路费

题目

题目链接:缴纳过路费

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

思路分析

这一题就是很典型的 并查集 的题目了,它就是一个找父节点的思路流程。

对于并查集,本篇就不说了,后面会出一期来讲它的,如果对这个算法陌生的话可以学习一下这个大佬的文章:跳转链接,这位大佬讲的很好,我也是学习的他的文章。

下面就针对这道题分析一下 ——

题目里面比较需要注意的点 ——

  1. 过路费是指最大价值,而不是总和
  2. 过路费要处于上下限之间
  3. 道路是双向的

规则一 和 规则二,就意味着如果有一条路的价值超过上限,那就不需要考虑它。对于低于下限的道路,可以和符合条件的道路共存,但不能单独存在。

规则三意味着没有直接连接的两个地方也能够到达。

OK,大概就是这些内容,然后我们针对下面这组数据来分析一下

6 8 2 7
1 2 2
1 3 5
2 3 8
1 4 1
2 4 5
2 5 4
3 4 9
2 6 1

其中 2 - 3 和 3 - 4这两条路超过了最大价值,可以在存储的时候直接去除掉,我们用不到它。
然后 1 - 4 和 2 - 6这两条路低于最低价值,我们需要记录一下,不能让它们单独出现。

uf1是低于上限的,uf2是低于下限的
他们的一个路径大致如下图 ——
在这里插入图片描述
也就是说——
(1,2)(1,3)(1,4)(1,5)(2,3)(2,4)(2,5)(3,4)(3,5)(4,5)
任选两个城市都是符合的,所以我们只需要知道符合的城市的总数,然后就能直接计算:

n * (n - 1) // 2

然后还需要注意类似uf2这样结构的,就是两个独立的分支,两边都需要计算。

低于上限的所有路径 - 只包含低于下限的路径

这样就能够计算上所有符合的了。
OKK,下面看看代码吧。

代码

class UnionFind:def __init__(self, n):self.pre = [i for i in range(n)]        # 记录父节点self.size = [1] * ndef find(self, x):                          # 寻找根节点if x != self.pre[x]:                    # 判断父节点是不是自己本身rx = self.find(self.pre[x])         # 向上寻找父节点self.pre[x] = rxreturn rxreturn xdef union(self, x, y):                      # 组合/连接两个节点rx, ry = self.find(x), self.find(y)if rx == ry:                            # 如果两个数的父节点是相同的就直接返回returnself.pre[ry] = rx                   # 这里互换也是一样的,不考虑内部结构self.size[rx] += self.size[ry]      # 记录以它为根节点的所有子树def cal(num):return num * (num - 1) // 2n, m, l, r = map(int, input().split())
uf1 = UnionFind(n + 1)
uf2 = UnionFind(n + 1)
for i in range(n):u, v, w = map(int, input().split())if w <= r:                                  # 比上限小的才存进来uf1.union(u, v)if w < l:uf2.union(u, v)ans = 0
for i in range(1, n + 1):if i == uf1.find(i):ans += cal(uf1.size[i])if i == uf2.find(i):ans -= cal(uf2.size[i])
print(ans)

纯职业小组

题目

题目链接:纯职业小组

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

思路分析

这道题就是去考虑最差情况,题目情况很多,我们一点点来分析。
首先我们对各个小组人数进行一个分类 ——

  1. 比3小的,这个就直接加上去就行了
  2. 比3大的,余数是 0 的,如果被用完 + 0,没用完 + 2
  3. 比3大的,余数是 1 的,如果被用完 + 1,没用完 + 2
  4. 比3大的,余数是 2 的,这个无论有没有被用完,都可以直接 + 2

给大家一个例子

1
2 2
1 8
3 4

你们按照上面的逻辑去写,就知道怎么个事儿了。

然后对于 所能组成的队伍数 - k(需要组成的队伍数) 如果 大于兵种数,那么就需要加上 2 * 兵种数,如果小于兵种数就需要进行更麻烦的计算了。

if k <= y2:ans += 3 * k + (y0 + y1) * 2 + y2 * 2
elif k <= y1 + y2:x = y1 + y2 - kans += 3 * k + (y0 + x) * 2 + y2 * 2 + (y1 - x)
elif k <= y0 + y1 + y2:x = y0 + y1 + y2 - kans = 3 * k + x * 2 + y2 * 2 + y1

大概就是这么回事。
然后和大伙说一下就是我的代码没有完全实现,至少在我对这道题目的理解下,但是能够解决题目测试点,但是整体思路应该是对的。

t = int(input())
for _ in range(t):n, k = map(int, input().split())A = {}z = 0for __ in range(n):a, b = map(int, input().split())if a in A.keys():A[a] += belse:A[a] = bgroup = ans = 0y0 = y1 = y2 = 0for i in A.keys():if A[i] >= 3:group += A[i] // 3if A[i] % 3 == 0:       # 余数为0y0 += 1elif A[i] % 3 == 1:     # 余数为1y1 += 1elif A[i] % 3 == 2:     # 余数为2y2 += 1else:ans += A[i]             # 比3小的队伍直接加z += 1if k > group:print(-1)else:if group - k > n:           # 测试样例全是这里的值ans += k * 3 + 2 * (len(A.keys()) - z)print(ans - 2)else:if k <= y2:ans += 3 * k + (y0 + y1) * 2 + y2 * 2elif k <= y1 + y2:x = y1 + y2 - kans += 3 * k + (y0 + x) * 2 + y2 * 2 + (y1 - x)elif k <= y0 + y1 + y2:x = y0 + y1 + y2 - kans = 3 * k + x * 2 + y2 * 2 + y1print(ans)

感谢大伙观看,别忘了三连支持一下

大家也可以关注一下我的其它专栏,同样精彩喔~

下期见咯~

请添加图片描述

相关文章:

第十五届蓝桥杯大赛软件赛省赛Python 大学 B 组试做(下)【本期题单: 缴纳过路费, 纯职业小组】

本期题单&#xff1a;缴纳过路费&#xff0c;纯职业小队 文章目录 缴纳过路费题目思路分析代码 纯职业小组题目思路分析 感谢大伙观看&#xff0c;别忘了三连支持一下大家也可以关注一下我的其它专栏&#xff0c;同样精彩喔~下期见咯~ 缴纳过路费 题目 题目链接&#xff1a;缴…...

数字政府网络架构建设方案

数字政府网络架构建设方案 一、引言 随着信息技术的快速发展&#xff0c;数字政府建设已成为提升政府治理能力和服务水平的关键。网络架构作为数字政府的核心基础设施&#xff0c;对于保障数据安全、提高服务效率、促进信息共享具有重要意义。本方案旨在为数字政府网络架构建…...

Dynamics 365 Business Central AL Code 公司间物料同步的Code参考

#BC ERP# #D365 ERP# #Navision# 前言 在BC实施过程中&#xff0c;经常会碰到客户有多个公司&#xff0c;但物料是相同的。因为都在BC平台&#xff0c;用Power Automate方案也是可行&#xff0c;但往往用AL Code实现更容易。 CodeUnit 实现Sync item to Other company codeu…...

vue+uniapp 获取上一页直接传递的参数

在小程序里页面之间跳转有时候需要传递参数给下个页面用 const toDetail item > { uni.navigateTo({ url: /pagesFood/stu/FoodSelection?groupCode1&merchCode2, }); }; 那么下个页面就要获取到这些参数&#xff0c;在实际开发中&#xff…...

[UEC++]UE5C++各类变量相关知识及其API(更新中)

基础变量 UE自己定义的目的&#xff1a;1.跨平台&#xff1b;2.兼容反射&#xff1b;3.方便宏替换 FString 基础赋值与初始化 遍历与内存 迭代器访问 清除系列操作 合并 插入与移除 RemoveFromStart是从开头看&#xff0c;没有则移除失败返回false&#xff1b; RemoveFromEnd是…...

RK3588 android12 适配 ilitek i2c接口TP

一&#xff0c;Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器&#xff0c;如 ILI6480、ILI9341 等&#xff0c;采用 I2C 接口。 这些控制器能够支持多点触控&#xff0c;并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时&a…...

安装vllm

ubuntu 22.04, RTX3080, cuda 12.1, cudnn 8.9.7&#xff0c;cuda和cudnn的安装参考&#xff1a;https://blog.csdn.net/m0_52111823/article/details/147154526?spm1001.2014.3001.5501。 查看版本对应关系&#xff0c;下载12.1对应的whl包&#xff0c;https://github.com/vl…...

利用安固软件实现电脑屏幕录像:四种实用方法分享

在日常工作中&#xff0c;有时我们需要录制电脑屏幕以进行教学演示、软件操作记录或重要会议的存档。安固软件终端安全管理系统提供了强大的屏幕录像功能&#xff0c;可以满足这些需求。 接下来&#xff0c;本文将介绍如何使用安固软件设置电脑实时画面录像&#xff0c;并分享…...

[Effective C++]条款30:透彻了解inlining的里里外外

. 1、内联函数 inline内联函数的设计是为了消除函数调用的开销&#xff0c;在编译期间由编译器将函数体插入到每个调用点&#xff0c;来避免常规函数调用时的压栈、跳转和返回等操作&#xff0c;减少函数调用的时间开销。 1.1、内联函数作用 减少函数调用开销&#xff1a; 消…...

CExercise_10_2动态内存分配_1从键盘输入输入中读取一个整数n,动态分配一个长度为n的整型数组。

题目&#xff1a; 编写程序&#xff0c;从键盘输入输入中读取一个整数n&#xff0c;动态分配一个长度为n的整型数组。 将数组元素初始化为1, 2, 3, …, n&#xff0c;并输出打印数组内容&#xff0c;最后释放内存。 注意: 初始化内存块时可以直接使用下标来操作内存块。 遍历打…...

这种情况是应为VScode的版本太新了,更新到1.86版本后要求远程连接服务器的内核版本不符合条件

这种情况是应为VScode的版本太新了&#xff0c;更新到1.86版本后要求远程连接服务器的内核版本不符合条件 解决方法 vscode降级&#xff0c;使用1.86以前的版本。亲测这种方法成功解决 首先关闭VSCode自动更新 Windows下载1.85版本链接&#xff1a;https://update.code.visua…...

文件IO7(中文字库的原理与应用/目录检索原理与应用/并发编程的原理与应用)

中文字库的原理与应用 ⦁ 基本概念 一般在项目中都会显示汉字&#xff0c;都采用中文简体字符集&#xff0c;计算机早期只有ANSI组织设计的ANSII码&#xff0c;其实也属于字符集&#xff0c;这套字符集并未收录中文&#xff0c;只收录256个字符。 所以后期中国国家标准总局设…...

基于SpringBoot的智慧社区管理系统(源码+数据库)

499基于SpringBoot的智慧社区管理系统&#xff0c;系统包含三种角色&#xff1a;管理员、用户主要功能如下。 【用户功能】 1. 首页&#xff1a;查看系统。 2. 超市商品&#xff1a;浏览超市中各类商品信息。 3. 动物信息&#xff1a;了解社区内的动物种类和相关信息。 4. 车位…...

OpenCV 伪彩色处理

伪彩色处理是将灰度图像通过颜色映射转换为彩色图像的技术&#xff0c;常用于增强可视化效果或突出显示特定灰度范围。OpenCV 提供了多种方法实现伪彩色处理。 1. 使用 applyColorMap 函数 OpenCV 提供了 cv::applyColorMap() 函数&#xff0c;支持多种预定义的色彩映射&…...

ADI 算法,ADAU1452算法

MCU控制DSP的公式...

低代码控件开发平台:飞帆中粘贴富文本的控件

效果&#xff1a; 链接&#xff1a; https://fvi.cn/729...

ICRA-2025 | 视觉预测助力机器人自主导航!NavigateDiff:视觉引导的零样本导航助理

论文&#xff1a;Yiran Qin 1 , 2 ^{1,2} 1,2, Ao Sun 2 ^{2} 2, Yuze Hong 2 ^{2} 2, Benyou Wang 2 ^{2} 2, Ruimao Zhang 1 ^{1} 1单位&#xff1a; 1 ^{1} 1中山大学&#xff0c; 2 ^{2} 2香港中文大学深圳校区论文标题&#xff1a;NavigateDiff: Visual Predictors are Ze…...

[问题帖] vscode 重启远程终端

原理 有的时候&#xff0c;在vscode 远程ssh连接到服务器的时候&#xff0c;可能遇到需要重启终端才能生效的配置&#xff0c;比如add group的时候&#xff0c;而此时无论你是关闭vscode终端重启&#xff0c;还是reload窗口都是没用的。 因为不管你本地是否连接了远程的vscode服…...

2025年前端框架全景解析:React、Vue、Angular的生态与未来之争

一、市场格局:全球与国内的双重差异12 全球市场React:凭借Facebook的支持和庞大的社区,全球使用率超40%,尤其在数据密集型应用(如金融、社交平台)中占据主导。其跨平台能力(React Native)和灵活生态(Next.js、Redux)是核心竞争力。Vue:亚洲市场占比显著,中国开发者…...

【Linux】Orin NX编译 linux 内核及内核模块

1、下载交叉编译工具:gcc 1)下载地址:https://developer.nvidia.com/embedded/jetson-linux 选择TOOLS中的交叉编译工具:gcc 11.3 2)解压 将gcc编译器解压到指定目录中,如:/home/laoer/nvidia/gcc 3)配置环境变量 创建: ~/nvidia/gcc/env.sh添加: #!/bin/bash e…...

Java 读取 csv 文件

1、引入 maven 依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-csv</artifactId><version>1.9.0</version> </dependency>2、java 代码 /*** csv 内容解析** param filePath 文件路径* para…...

蓝桥杯考前复盘

明天就是考试了&#xff0c;适当的停下刷题的步伐。 静静回望、思考、总结一下&#xff0c;我走过的步伐。 考试不是结束&#xff0c;他只是检测这一段时间学习成果的工具。 该继续走的路&#xff0c;还是要继续走的。 只是最近&#xff0c;我偶尔会感到迷惘&#xff0c;看…...

【C++经典例题】字符串转整数(atoi)的实现与解析

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;C经典例题 期待您的关注 目录 一、问题描述 二、解题思路 三、代码实现 四、代码逻辑详解 1. 变量初始化 2. 忽略前导空格 …...

Java面试黄金宝典44

1. 查看进程的运行堆栈信息命令 gstack gstack 是 Linux 系统下用于查看指定进程运行时堆栈信息的工具。当程序出现崩溃、死锁或者性能瓶颈等问题时,借助 gstack 可以查看进程中各个线程的调用栈,从而辅助开发人员定位问题。 定义 gstack 本质上是一个封装了底层 ptrace 系统…...

批量统一图像色彩

图嗯&#xff0c;用户之前问过如何批量统一多张图片的色调&#xff0c;我给出了几种方法&#xff0c;包括Photoshop、Lightroom、GIMP、在线工具和AI工具。现在用户进一步说明&#xff0c;他有一张红蓝色的图&#xff0c;其他几张是各种颜色&#xff0c;想用代码或AI批量将它们…...

数据库数据恢复——sql server数据库被加密怎么恢复数据?

SQL server数据库数据故障&#xff1a; SQL server数据库被加密&#xff0c;无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密&#xff0c;文件名字被篡改。 SQL server数据库数据恢复过程&#xff1a; 1、将所有数据库做完整只读备份。后续所有数据恢…...

蓝桥杯C++组部分填空题

P1508 - [蓝桥杯2020初赛] 门牌制作 - New Online Judge #include<bits/stdc.h> using namespace std;int main() {int res 0;for(int i 1; i < 2020; i){int num i;while(num){if(num % 10 2) res;num/10;}}cout<<res;return 0; } 624 P1509 - [蓝桥杯20…...

C# 组件的使用方法

类 Stopwatch 计算时间 Stopwatch sw new Stopwatch(); sw.Start(); // 要执行的代码块 Thread.Sleep(2000);sw.ElapsedMilliseconds // 消耗时间 Console.WriteLine(sw.ElapsedMilliseconds);组件 ListView 属性设置 外观 - View - Details 行为 - Columns -&#xff08;…...

Python 装饰器(Decorator)

文章目录 代码解析1. 装饰器定义 timer(func)2. 应用装饰器 timer **执行流程****关键点****实际应用场景****改进版本&#xff08;带 functools.wraps&#xff09;** 这是一个 Python 装饰器&#xff08;Decorator&#xff09; 的示例&#xff0c;用于测量函数的执行时间。下…...

QCustomPlot频谱图

使用QCutomPlot做的读取txt文件显示频谱图的demo,帮助大家了解QCustomPlot的基本使用 1.运行结果 demo比较简单,用于文件读取,鼠标放大缩小,右键截图等基础功能. 2.绘图详解 绘图核心是将类提升为QCustomPlot之后进行重绘,重绘之前设计图表曲线,图标标题,坐标轴,坐标轴范围,背…...