华为0507机试
题目二 建设基站
有一棵二叉树,每个节点上都住了一户居民。现在要给这棵树上的居民建设基站,每个基站只能覆盖她所在与相邻的节点,请问信号覆盖这棵树最少需要建设多少个基站
#include <bits/stdc++.h>
using namespace std;const int N = 3010;struct Node {int val;Node*left, *right;Node (int _val) : left(nullptr), right(nullptr){val = _val;}
};int num[N];
Node* root;
int tot = 0;
const int INF = 1e8;void build() {root = new Node(num[0]);queue<Node*> q;q.push(root);int i = 1;while (!q.empty()) {if (i == tot) break;auto node = q.front();q.pop();if (num[i] != -1) {auto l = new Node(num[i]);node->left = l;q.push(l);} else {node->left = nullptr;}i++;if (num[i] != -1) {auto r = new Node(num[i]);node->right = r;q.push(r);} else {node->right = nullptr;}i++;}
}vector<int> dfs(Node* root) {if (!root) return {0, 0, INF};auto l = dfs(root->left), r = dfs(root->right);return {min(l[1], l[2]) + min(r[1], r[2]),min(l[2] + min(r[1], r[2]), r[2] + min(l[1], l[2])),min(l[0], min(l[1], l[2])) + min(r[0], min(r[1], r[2])) + 1};
}int main() {string line;getline(cin, line);stringstream ssin(line);string n;int i = 0;while (ssin >> n) {tot++;if (n != "N") {num[i] = stoi(n);} else {num[i] = -1;}i++;}build();auto f = dfs(root);cout << min(f[1], f[2]) << endl;return 0;
}
题目三 最小代价相遇的路径规划
假定有两辆车在给定一个 n x n 的非负整数矩阵地图 grid中行驶,地图左上角位置为[0, 0]。我们简化车辆行驶的方式,每辆车可以从一个坐标行驶到相邻(上下左右)的另一个坐标,并且经过的每个位置都会产生代价,包括起始位置的代价。其中 grid[i] [j] 表示通过网格位置 [i, j] 所需的代价。矩阵中,grid[i] [j] 等于 0 表示该位置为障碍物,车辆无法通过。
两辆车约定好需要在地图中快速相遇进行货物交接。两辆车相遇的定义为:两辆车最终分别停在相邻的网格位置(上下或左右相邻),并且路径可达。 两辆车相遇所需的代价定义为:两辆车到达各自相遇位置所需代价中的较大值。 注意:路径代价包含车辆的起始位置位置的代价;行驶过程中,车辆可以停在某一个网格位置上,两辆车无需同步行驶。
求两辆车可以相遇需要的最小代价,如果无法相遇则返回 -1 。
#include <bits/stdc++.h>
using namespace std;const int N = 1010;int g[N][N];
int n;
int ca[N][N], cb[N][N];
int res = INT_MAX;
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};int main() {cin >> n;for (int i = 0; i < n; i++) for (int j = 0; j < n; j++)cin >> g[i][j];memset(ca, 0x3f, sizeof ca);memset(cb, 0x3f, sizeof cb);for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (!g[i][j]) continue;if (!i && !j) ca[i][j] = g[i][j];else {if (i) ca[i][j] = min(ca[i][j], ca[i-1][j] + g[i][j]);if (j) ca[i][j] = min(ca[i][j], ca[i][j-1] + g[i][j]);}}}for (int i = n - 1; i >= 0; i--) {for (int j = n-1; j >= 0; j--) {if (!g[i][j]) continue;if (i == n-1 && j == n-1) cb[i][j] = g[i][j];else {if (i != n-1) cb[i][j] = min(cb[i][j], cb[i+1][j] + g[i][j]);if (j != n-1) cb[i][j] = min(cb[i][j], cb[i][j+1] + g[i][j]);}}}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {for (int t = 0; t < 4; t++) {int x = i + dx[t], y = j + dy[t];if (x < 0 || x >= n || y < 0 || y >= n) continue;res = min(res, max(ca[i][j], cb[x][y]));}}}if (res >= 0x3f) cout << -1 << endl;else cout << res << endl;return 0;
}
相关文章:
华为0507机试
题目二 建设基站 有一棵二叉树,每个节点上都住了一户居民。现在要给这棵树上的居民建设基站,每个基站只能覆盖她所在与相邻的节点,请问信号覆盖这棵树最少需要建设多少个基站 #include <bits/stdc.h> using namespace std;const int …...

OpenEvidence AI临床决策支持工具平台研究报告
平台概述 OpenEvidence是一个专为医疗专业人士设计的临床决策支持工具,旨在通过整合各类临床计算器和先进的人工智能技术,提高医生的诊疗决策效率和准确性。作为一款综合性医疗平台,OpenEvidence将复杂的医学计算流程简化,同时提供个性化的临床建议,使医生能够更快、更准…...
`RotationTransition` 是 Flutter 中的一个动画组件,用于实现旋转动画效果
RotationTransition 是 Flutter 中的一个动画组件,用于实现旋转动画效果。它允许你对子组件进行动态的旋转变换,从而实现平滑的动画效果。RotationTransition 通常与 AnimationController 和 Tween 一起使用,以控制动画的开始、结束和过渡效果…...
Android多媒体——媒体start流程分析(十三)
当多媒体的数据源准备好,并且完成调用准备结束流程后,接下来就开始是调用 start() 方法开始播放媒体了。这里我们就来分析一下媒体开始播放的整个流程。 一、媒体播放流程 对于媒体播放流程的 Java 层和 JNI 层与前面的示例基本相同,这里不再重复展示了,我们直接从 mediap…...

如何远程执行脚本不留痕迹
通常我们在做远程维护的时候,会有这么一个需求,就是我想在远程主机执行一个脚本,但是这个脚本我又不想保留在远程主机上,那么有人就说了,那就复制过去再登录远程执行不就行了吗?嗯嗯,但是这还不…...
jQuery知识框架
一、jQuery 基础 核心概念 $ 或 jQuery:全局函数,用于选择元素或创建DOM对象。 链式调用:多数方法返回jQuery对象,支持连续操作。 文档就绪事件: $(document).ready(function() { /* 代码 */ }); // 简写 $(function…...
java加强 -File
File类的对象可以代表文件/文件夹,并可以调用其提供的方法对象文件进行操作。 File对象既可以代表文件,也可以代表文件夹。 创建File对象,获取某个文件的信息 语法: File 对象名 new File("需要访问文件的绝对路径&…...
c# 倒序方法
在C#中,有几种方法可以对List进行倒序排列: 1. 使用List的Reverse()方法(原地反转) List<int> numbers new List<int> { 1, 2, 3, 4, 5 };numbers.Reverse(); // 直接修改原列表// 结果:5, 4, 3, 2, 1 …...
每日c/c++题 备战蓝桥杯(P2241 统计方形(数据加强版))
洛谷P2241 统计方形(数据加强版)题解 题目描述 给定一个 n m n \times m nm 的方格棋盘,要求统计其中包含的正方形数量和长方形数量(不包含正方形)。输入为两个正整数 n n n 和 m m m,输出两个整数分…...

Ota++框架学习
一:框架结构 这是一幅展现 Web 应用程序架构的示意图,以下是对图中各部分的详细解释: 外部交互部分 Request(请求):位于架构图的左上角,用黄色虚线框表示 。代表来自客户端(如浏览器…...

Chrome安装最新vue-devtool插件
本vue-devtool版本是官方的 v7.6.8版本,兼容性好、功能齐全且稳定。 操作步骤: 方法一: 打开谷歌浏览器 --> 右上角三个点 --> 扩展程序 --> 管理扩展程序 --> 加载已解压的扩展程序, 然后选择解压后的文件夹即可。…...
Android锁
引言 🔒 在 Android 应用的开发过程中,随着业务需求的复杂度不断提升,多线程并发场景层出不穷。为了保证数据一致性与线程安全,锁(Lock)成为了不可或缺的工具。本篇博客将深入剖析 Android 中常用的锁机制…...

bfs-最小步数问题
最小步长模型 特征: 主要是解决权值为1且状态为字符串类型的最短路问题,实质上是有向图的最短路问题,可以简化为bfs求最短路问题。 代表题目: acwing 845 八数码问题: 八数码题中由于每次交换的状态是由x进行上下左右…...
sqlalchemy库详细使用
SQLAlchemy 是 Python 中最强大、最受欢迎的 ORM(对象关系映射)库,它允许你使用 Python 对象来操作数据库,而不需要直接编写 SQL 语句。同时,它也提供了对底层 SQL 的完全控制能力,适用于从简单脚本到大型企…...

java----------->代理模式
目录 什么是代理模式? 为什么会有代理模式? 怎么写代理模式? 实现代理模式总共需要三步: 什么是代理模式? 代理模式:给目标对象提供一个代理对象,并且由代理对象控制目标对象的引用 代理就是…...
ET ProcessInnerSender类(实体) 分析
ProcessInnerSender 作用是进程内部发送Actor消息 字段 TIMEOUT_TIME 超时时间RpcId 用来累加requestCallback 存储RPC的回调事件list 用来获取MessageQueue中的Actor消息 方法 Awake 初始化在MessageQueue中注册待处理的消息队列Destroy 移除在MessageQueue中的消息队列U…...

Untiy基础学习(十四)核心系统—物理系统之碰撞检测代码篇 刚体,碰撞体,材质
目录 一、碰撞器(Collider)与触发器(Trigger) 二、碰撞检测条件 三、碰撞事件与触发器事件,可以理解为特殊的生命周期函数。 四、讲讲如何选择 编辑 五、总结 一、碰撞/触发事件函数对照表 二、Collider 与 …...

SAP学习笔记 - 开发08 - Eclipse连接到 BTP Cockpit实例
有关BTP,之前学了一点儿,今天继续学习。 SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)_sap btp开发-CSDN博客 如何在Eclipse中连接BTP Cockpit开发环境实例。 1…...
如何用Redis实现分布式锁?RedLock算法的核心思想?Redisson的看门狗机制原理?
一、Redis分布式锁基础实现 public class RedisDistributedLock {private JedisPool jedisPool;private String lockKey;private String clientId;private int expireTime 30; // 默认30秒public boolean tryLock() {try (Jedis jedis jedisPool.getResource()) {// NX表示不…...
Java项目层级介绍 java 层级 层次
java 层级 层次 实体层 控制器层 数据连接层 Service : 业务处理类 Repository :数据库访问类 Java项目层级介绍 https://blog.csdn.net/m0_67574906/article/details/145811846 在Java项目中,层级结构(Layered Architecture…...

Git的安装和配置(idea中配置Git)
一、Git的下载和安装 前提条件:IntelliJ IDEA 版本是2023.3 ,那么配置 Git 时推荐使用 Git 2.40.x 或更高版本 下载地址:CNPM Binaries Mirror 操作:打开链接 → 滚动到页面底部 → 选择2.40.x或更高版本的 .exe 文件…...

【2025版】Spring Boot面试题
文章目录 1. Spring, Spring MVC, SpringBoot是什么关系?2. 谈一谈对Spring IoC的理解3. Component 和 Bean 的区别?4. Autowired 和 Resource 的区别?5. 注入Bean的方法有哪些?6. 为什么Spring 官方推荐构造函数注入?…...

火山引擎实时音视频 高代码跑通日志
实时音视频 SDK 概览--实时音视频-火山引擎 什么是实时音视频 火山引擎实时音视频(Volcengine Real Time Communication,veRTC)提供全球范围内高可靠、高并发、低延时的实时音视频通信能力,实现多种类型的实时交流和互动。 通…...
atoi函数,sprintf函数,memcmp函数,strchar函数的具体原型,功能,返回值;以及使用方法
以下是这四个C语言标准库函数的详细说明: 1. atoi() - 字符串转整数 **原型**: int atoi(const char *str); **功能**: 将字符串参数str转换为整数(int类型)。函数会跳过前面的空白字符(如空格、制表符&am…...
C++学习之打车软件git版本控制
目录 01 3-git的简介 02 4-git的下载和提交代码 03 5-git添加一个新文件 04 5-删除一个文件 05 6-git的批量添加和提交文件 06 7-git重命名文件名 07 8-git解决代码冲突 08 9-git的分支的概念 09 10-创建项目代码仓库 10 1-git提交代码复习 01 3-git的简介 1 --------…...
基于 PostgreSQL 的 ABP vNext + ShardingCore 分库分表实战
🚀 基于 PostgreSQL 的 ABP vNext ShardingCore 分库分表实战 📑 目录 🚀 基于 PostgreSQL 的 ABP vNext ShardingCore 分库分表实战✨ 背景介绍🧱 技术选型🛠️ 环境准备✅ Docker Compose(多库 & 读…...

jenkins 启动报错
java.lang.UnsatisfiedLinkError: /opt/application/jdk-17.0.11/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory。 解决方案: yum install freetype-devel 安装完成之后重启jenkins。...
C++ 套接字函数详细介绍
目录 头文件1. 套接字创建与配置2. 绑定地址与端口3. 连接建立4. 数据传输5. 套接字选项6. 地址转换7. 套接字关闭8. 其他实用函数 C 套接字函数详细介绍 套接字(Socket)是网络通信的基本端点,C中通常使用BSD套接字API进行网络编程。以下是主要的套接字相关函数及其…...

【合新通信】无人机天线拉远RFOF(射频光纤传输)解决方案
无人机天线拉远RFOF方案通过光纤替代传统射频电缆,实现无人机与地面控制站之间的高保真、低损耗信号传输,尤其适用于高频段(如毫米波)、远距离或复杂电磁环境下的无人机作业场景。 核心应用场景 军事侦察与电子战 隐蔽部署&…...

程序设计语言----软考中级软件设计师(自用学习笔记)
目录 1、解释器和编译器 2、程序的三种控制结构 3、程序中的数据必须具有类型 4、编译、解释程序翻译阶段 5、符号表 6、编译过程 7、上下文无关文法 8、前、中、后缀表达式 9、前、后缀表达式计算 10、语法树中、后序遍历 11、脚本语言和动态语言 12、语法分析方法…...