2024.2.27每日一题

之前是出去旅游了没发,现在开学了,继续每日一题,继续卷,一上来就是困难题😓,直接cv大法。

LeetCode

统计树中的合法路径数目

2867. 统计树中的合法路径数目 - 力扣(LeetCode)

题目描述

给你一棵 n 个节点的无向树,节点编号为 1n 。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示节点 uivi 在树中有一条边。

请你返回树中的 合法路径数目

如果在节点 a 到节点 b 之间 恰好有一个 节点的编号是质数,那么我们称路径 (a, b)合法的

注意:

  • 路径 (a, b) 指的是一条从节点 a 开始到节点 b 结束的一个节点序列,序列中的节点 互不相同 ,且相邻节点之间在树上有一条边。
  • 路径 (a, b) 和路径 (b, a) 视为 同一条 路径,且只计入答案 一次

示例 1:

img

输入:n = 5, edges = [[1,2],[1,3],[2,4],[2,5]]
输出:4
解释:恰好有一个质数编号的节点路径有:
- (1, 2) 因为路径 1 到 2 只包含一个质数 2 。
- (1, 3) 因为路径 1 到 3 只包含一个质数 3 。
- (1, 4) 因为路径 1 到 4 只包含一个质数 2 。
- (2, 4) 因为路径 2 到 4 只包含一个质数 2 。
只有 4 条合法路径。

示例 2:

img

输入:n = 6, edges = [[1,2],[1,3],[2,4],[3,5],[3,6]]
输出:6
解释:恰好有一个质数编号的节点路径有:
- (1, 2) 因为路径 1 到 2 只包含一个质数 2 。
- (1, 3) 因为路径 1 到 3 只包含一个质数 3 。
- (1, 4) 因为路径 1 到 4 只包含一个质数 2 。
- (1, 6) 因为路径 1 到 6 只包含一个质数 3 。
- (2, 4) 因为路径 2 到 4 只包含一个质数 2 。
- (3, 6) 因为路径 3 到 6 只包含一个质数 3 。
只有 6 条合法路径。

提示:

  • 1 <= n <= 105
  • edges.length == n - 1
  • edges[i].length == 2
  • 1 <= ui, vi <= n
  • 输入保证 edges 形成一棵合法的树。

思路

困难题,cv大法

灵神题解
2867. 统计树中的合法路径数目 - 力扣(LeetCode)

代码

C++
const int MX = 1e5;
bool np[MX + 1]; // 质数=false 非质数=true
int init = []() {np[1] = true;for (int i = 2; i * i <= MX; i++) {if (!np[i]) {for (int j = i * i; j <= MX; j += i) {np[j] = true;}}}return 0;
}();class Solution {
public:long long countPaths(int n, vector<vector<int>> &edges) {vector<vector<int>> g(n + 1);for (auto &e: edges) {int x = e[0], y = e[1];g[x].push_back(y);g[y].push_back(x);}vector<int> size(n + 1);vector<int> nodes;function<void(int, int)> dfs = [&](int x, int fa) {nodes.push_back(x);for (int y: g[x]) {if (y != fa && np[y]) {dfs(y, x);}}};long long ans = 0;for (int x = 1; x <= n; x++) {if (np[x]) continue; // 跳过非质数int sum = 0;for (int y: g[x]) { // 质数 x 把这棵树分成了若干个连通块if (!np[y]) continue;if (size[y] == 0) { // 尚未计算过nodes.clear();dfs(y, -1); // 遍历 y 所在连通块,在不经过质数的前提下,统计有多少个非质数for (int z: nodes) {size[z] = nodes.size();}}// 这 size[y] 个非质数与之前遍历到的 sum 个非质数,两两之间的路径只包含质数 xans += (long long) size[y] * sum;sum += size[y];}ans += sum; // 从 x 出发的路径}return ans;}
};
Java
class Solution {private final static int MX = (int) 1e5;private final static boolean[] np = new boolean[MX + 1]; // 质数=false 非质数=truestatic {np[1] = true;for (int i = 2; i * i <= MX; i++) {if (!np[i]) {for (int j = i * i; j <= MX; j += i) {np[j] = true;}}}}public long countPaths(int n, int[][] edges) {List<Integer>[] g = new ArrayList[n + 1];Arrays.setAll(g, e -> new ArrayList<>());for (var e : edges) {int x = e[0], y = e[1];g[x].add(y);g[y].add(x);}long ans = 0;int[] size = new int[n + 1];var nodes = new ArrayList<Integer>();for (int x = 1; x <= n; x++) {if (np[x]) { // 跳过非质数continue;}int sum = 0;for (int y : g[x]) { // 质数 x 把这棵树分成了若干个连通块if (!np[y]) {continue;}if (size[y] == 0) { // 尚未计算过nodes.clear();dfs(y, -1, g, nodes); // 遍历 y 所在连通块,在不经过质数的前提下,统计有多少个非质数for (int z : nodes) {size[z] = nodes.size();}}// 这 size[y] 个非质数与之前遍历到的 sum 个非质数,两两之间的路径只包含质数 xans += (long) size[y] * sum;sum += size[y];}ans += sum; // 从 x 出发的路径}return ans;}private void dfs(int x, int fa, List<Integer>[] g, List<Integer> nodes) {nodes.add(x);for (int y : g[x]) {if (y != fa && np[y]) {dfs(y, x, g, nodes);}}}
}

image-20240227113838361

image-20240227113852331

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

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

相关文章

选择何种操作系统作为网站服务器

选择操作系统时&#xff0c;需考虑稳定性、安全性、成本、兼容性和技术支持等因素&#xff0c;常见选项有Windows Server和Linux发行版。 选择网站服务器的操作系统是一个关键的决策&#xff0c;因为它将影响到网站的性能、稳定性、安全性以及未来的扩展性&#xff0c;目前市场…

PMP考试之20240229

1、两个团队成员讨论一个关于服务器配置的问题&#xff0c;当第一个成员问为什么这个问题一直发生时&#xff0c;第二个成员说服务器参数混乱&#xff0c;使他很难处理它的配置。第一个团队成员建议他们应该在接下来的几次服务器配置中进行咨询&#xff0c;第二个团队成员同意并…

数据库之ACID

一、ACID **原子性&#xff08;Atomicity&#xff09;&#xff1a;**即事务是不可分割的最小工作单元&#xff0c;事务内的操作要么全做&#xff0c;要么全不做&#xff0c;不能只做一部分&#xff1b; 一致性&#xff08;Consistency&#xff09;&#xff1a;在事务执行前数据…

oauth2.0怎么和jwt结合

OAuth 2.0 和 JWT 可以结合使用&#xff0c;以提供安全的身份验证和授权机制。在结合使用 OAuth 2.0 和 JWT 时&#xff0c;通常是使用 OAuth 2.0 进行用户授权和颁发访问令牌&#xff0c;而 JWT 则用作访问令牌&#xff08;Access Token&#xff09;。 下面是 OAuth 2.0 和 J…

NineData:从 Kafka 到 ClickHouse 的数据同步解决方案

在大数据处理领域&#xff0c;Apache Kafka 和 ClickHouse 都是非常重要的工具。Kafka 是一个分布式流处理平台&#xff0c;被数千家公司用于高性能数据管道、流式分析、数据集成和关键任务应用&#xff0c;如今已成为数据交换、数据集成、数据流转过程中的核心组件。而 ClickH…

【大数据】Flink SQL 语法篇(八):集合、Order By、Limit、TopN

Flink SQL 语法篇&#xff08;八&#xff09;&#xff1a;集合、Order By、Limit、TopN 1.集合操作2.Order By、Limit 子句2.1 Order By 子句2.2 Limit 子句 3.TopN 子句 1.集合操作 集合操作支持 Batch / Streaming 任务。 UNION&#xff1a;将集合合并并且去重。UNION ALL&a…

什么是索引优化?如何确定何时添加或删除索引?如何监控MySQL的性能?

什么是索引优化&#xff1f;如何确定何时添加或删除索引&#xff1f; 索引优化是数据库性能调优的一个重要环节&#xff0c;它涉及到对数据库索引的创建、修改和删除等操作&#xff0c;以提高数据库查询性能和数据访问效率。索引优化主要包括选择合适的索引类型、索引列、索引顺…

DataGrip 2023:让数据库开发变得更简单、更高效 mac/win版

JetBrains DataGrip 2023是一款功能强大的数据库IDE&#xff0c;专为数据库开发和管理而设计。通过DataGrip&#xff0c;您可以连接到各种关系型数据库管理系统(RDBMS)&#xff0c;并使用其提供的一组工具来查询、管理、编辑和开发数据库。 DataGrip 2023 软件获取 DataGrip …

[unity]lua热更新——个人复习笔记【侵删/有不足之处欢迎斧正】

一、AssetBundle AB包是特定于平台的资产压缩包&#xff0c;类似于压缩文件 相对于RESOURCES下的资源&#xff0c;AB包更加灵活轻量化&#xff0c;用于减小包体大小和热更新 可以在unity2019环境中直接下载Asset Bundle Browser 可以在其中设置关联 AB包生成的文件 AB包文件…

【Linux】云服务器的Redis被黑

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Linux ⛺️稳中求进&#xff0c;晒太阳 攻击发现&#xff1a; 这个异常情况是在腾讯云被入侵后&#xff0c;短信提醒发现的。并没有系统的学习过关于服务器安防相关的知识&#xff0c;遇到…

嵌入式学习日记 22

1.进程间的通信: 1.管道 2.信号 3.消息队列 4.共享内存 5.信号灯 6.套接字 1.管道: 1.无名管道 无名管道只能用于具有亲缘关系的进程间通信 pipe int pipe(int pipefd[2]); 功能: 创建一个无名管道 参数: …

【Hudi】并发控制

MVCC Hudi的表操作&#xff0c;如压缩、清理、提交&#xff0c;hudi会利用多版本并发控制来提供多个表操作写入和查询之间的快照隔离。使用MVCC这种模型&#xff0c;Hudi支持并发任意数量的操作作业&#xff0c;并保证不会发生任何冲突。Hudi默认这种模型。MVCC方式所有的tabl…

国产动漫|基于Springboot的国产动漫网站设计与实现(源码+数据库+文档)

国产动漫网站目录 目录 基于Springboot的国产动漫网站设计与实现 一、前言 二、系统功能设计 三、系统功能设计 1、用户信息管理 2、国漫先驱管理 3、国漫之最管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题…

LVS-DR实验.

IP规划: servera(LVS-DR):192.168.145.128 serverb(WB1):192.168.145.129 servere(WB2):192.168.145.131 servera(LVS-DR): 添加VIP: # 使用ifconfig命令配置虚拟网卡ens160:0的IP地址为192.168.145.123&#xff0c;广播地址…

C语言中如何进行内存管理

主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《C语言》 C语言是一种强大而灵活的编程语言&#xff0c;但与其他高级语言不同&#xff0c;它要求程序员自己负责内存的管理。正确的内存管理对于程序的性能和稳定性至关重要。 一、引言 C 语言是一门广泛使用的编程语…

VPX基于全国产飞腾FT-2000+/64核+复旦微FPGA的计算刀片

6U VPX计算板 产品简介 产品特点 飞腾计算平台&#xff0c;国产化率100% VPX-MPU6902是一款基于飞腾FT-2000/64核的计算刀片&#xff0c;主频2.2GHz&#xff0c;负责业务数据流的管控和调度。搭配自带独立显示芯片的飞腾X100芯片&#xff0c;可用于于各类终端及服务器类应用场…

蚓链数字化生态系统助力企业业务数字化转型

在当今数字化浪潮中&#xff0c;企业数字化转型已成为提升竞争力的关键。蚓链数字化生态系统致力于通过业务和技术的协同推动企业数字化转型&#xff0c;为企业提供了一套系统化的业务数字化解决方案。 业务数字化的第一步是根据企业当前业务分布&#xff0c;划分业务板块&…

spring boot整合cache使用memcached

之前讲了 spring boot 整合 cache 做 simple redis Ehcache 三种工具的缓存 上文 windows系统下载安装 memcached 我们装了memcached 但spring boot没有将它的整合纳入进来 那么 我们就要自己来处理客户端 java历史上 有过三种客户端 那么 我们用肯定是用最好的 Xmemcached …

Debian更改主机名重启失效怎么解决

要在Debian系统上更改主机名并使其生效&#xff0c;您可以按照以下步骤进行操作&#xff1a; 使用以下命令更改主机名&#xff1a; sudo hostnamectl set-hostname 新主机名 编辑 /etc/hosts 文件&#xff0c;将旧主机名替换为新主机名。您可以使用文本编辑器打开该文件进行编辑…

vue2 + axios + mock.js封装过程,包含mock.js获取数据时报404状态的解决记录,带图文,超详细!!!

vue axios mock.js 以下是封装的过程&#xff0c;记录一下 1、首先先了解什么是mock.js的用途及特点 官网地址&#xff1a;Mock.js (mockjs.com) 作用&#xff1a;生成随机数据&#xff0c;拦截 Ajax 请求 优势&#xff1a; 2、了解axios的原理及使用 官网地址&#xff1a…