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

力扣第157场双周赛

1. 最大质数子字符串之和

给定一个字符串 s,找出可以由其 子字符串 组成的 3个最大的不同质数 的和。

返回这些质数的 总和 ,如果少于 3 个不同的质数,则返回 所有 不同质数的和。

质数是大于 1 且只有两个因数的自然数:1和它本身。

子字符串 是字符串中的一个连续字符序列。 

注意:每个质数即使出现在 多个 子字符串中,也只能计算 一次 。此外,将子字符串转换为整数时,忽略任何前导零。

示例 1:

输入: s = "12234"

输出: 1469

解释:

由 "12234" 的子字符串形成的不同质数为 2 ,3 ,23 ,223 和 1223。
最大的 3 个质数是 1223、223 和 23。它们的和是 1469。
示例 2:

输入: s = "111"

输出: 11

解释:

由 "111" 的子字符串形成的不同质数是 11。
由于只有一个质数,所以结果是 11。
 

提示:

1 <= s.length <= 10
s 仅由数字组成。 

解题思路:字符串的长度只有10,注意字符串转 int -> [-10^9,10^9]时会超, 其他就是简单模拟即可

class Solution {
public:bool solve(long long num){if(num<2) return false;for(long long i=2;i*i<=num;i++){if(num%i==0) return false;}return true;}long long sumOfLargestPrimes(string s) {set<long long> a;int n=s.size();for(int i=0;i<n;i++){string tmp="";for(int j=i;j<n;j++){tmp+=s[j];         long long v=stoll(tmp);if(solve(v)){a.insert(v);}}}vector<long long> b(a.begin(),a.end()); sort(b.begin(),b.end()); int n_b=b.size(); long long sum=0;if(n_b>=3) return b[n_b-1]+b[n_b-2]+b[n_b-3];else{sum=accumulate(b.begin(),b.end(),0LL);}return sum;}
};

 2. 不相交子字符串的最大数量

给你一个字符串 word。

返回以 首尾字母相同 且 长度至少为 4 的 不相交子字符串 的最大数量。

子字符串 是字符串中连续的 非空 字符序列。

 

示例 1:

输入: word = "abcdeafdef"

输出: 2

解释:

两个子字符串是 "abcdea" 和 "fdef"。

示例 2:

输入: word = "bcdaaaab"

输出: 1

解释:

唯一的子字符串是 "aaaa"。注意我们 不能 同时选择 "bcdaaaab",因为它和另一个子字符串有重叠。

 

提示:

1 <= word.length <= 2 * 10^5
word 仅由小写英文字母组成。

解题思路:

f[i]=max(f[i-1],f[j-1]+1)
f(i): 从前i个字符中最多能选出多少个符合条件的子串 

class Solution {
public:int maxSubstrings(string word) {int n=word.size();vector<int> pre(26),a(n+1);for(int i=1;i<=n;i++){a[i]=pre[word[i-1]-'a'];pre[word[i-1]-'a']=i;}vector<int> f(n+1);f[0]=0;for(int i=1;i<=n;i++){f[i]=f[i-1];int j=a[i];while(j>0&&i-j<3) j=a[j];if(j>0){f[i]=max(f[i],f[j-1]+1);}}return f[n];}
};

 3. 给边赋权值的方案数 I

给你一棵 n 个节点的无向树,节点从 1 到 n 编号,树以节点 1 为根。树由一个长度为 n - 1 的二维整数数组 edges 表示,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间有一条边。
一开始,所有边的权重为 0。你可以将每条边的权重设为 1 或 2。

两个节点 u 和 v 之间路径的 代价 是连接它们路径上所有边的权重之和。

选择任意一个 深度最大 的节点 x。返回从节点 1 到 x 的路径中,边权重之和为 奇数 的赋值方式数量。

由于答案可能很大,返回它对 10^9 + 7 取模的结果。

注意: 忽略从节点 1 到节点 x 的路径外的所有边。

解题思路: 每条边的边权只能是1或者2,保证边上的边权和是奇数,保证有奇数个1即可,

实现上我们先求出最大深度x, 然后从x条边种选出1,3,5个1,其他为2

然后我们套用组合数公式Cn1+Cn3+...=2^(n-1) 

class Solution {
public:int mx=0;const int M=1e9+7; vector<vector<int>> g; void dfs(int i, int fa , int d){for(int x: g[i]){if(x!=fa){dfs(x,i,d+1);}}  mx=max(mx,d);}int assignEdgeWeights(vector<vector<int>>& edges){int n=edges.size()+1;g.resize(n+1);for(int i=0;i<n-1;i++){int x=edges[i][0],y=edges[i][1];g[x].push_back(y); g[y].push_back(x);}vector<int> p(n+1);p[0]=1;for(int i=1;i<=n;i++) p[i]=p[i-1]*2%M;dfs(1,0,0);return p[mx-1];}
};

 4. 给边赋权值的方案数 II

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


一开始,所有边的权重为 0。你可以将每条边的权重设为 1 或 2。

两个节点 u 和 v 之间路径的 代价 是连接它们路径上所有边的权重之和。

给定一个二维整数数组 queries。对于每个 queries[i] = [ui, vi],计算从节点 ui 到 vi 的路径中,使得路径代价为 奇数 的权重分配方式数量。

返回一个数组 answer,其中 answer[i] 表示第 i 个查询的合法赋值方式数量。

由于答案可能很大,请对每个 answer[i] 取模 10^9 + 7。

注意: 对于每个查询,仅考虑 ui 到 vi 路径上的边,忽略其他边。

解题思路:相比上题多了一个query的操作,变成ui -> vi 的路径权重和为奇数的方案数, 和上场周赛最后一题(可以直接点开我主页力扣栏查看即可), 类似,  

注:到底是比赛谁套个板子, 还有脸发到某站当比赛实录啊

const int M=1e9+7;
class LCA_solve {
public:vector<int> depth, to_root_minD;vector<vector<int>> pa;LCA_solve(vector<vector<int>>& edges) {int n = edges.size() + 1;int m = bit_width(edges.size() + 1); vector<vector<int>> g(n);for (auto& e : edges) {int x = e[0]-1, y = e[1]-1;g[x].push_back(y);g[y].push_back(x);}depth.resize(n);pa.resize(n, vector<int>(m, -1));auto dfs = [&](this auto&& dfs, int x, int fa) -> void {pa[x][0] = fa;for (auto& y : g[x]) {if (y != fa) {depth[y] = depth[x] + 1;dfs(y, x);}}};dfs(0, -1);for (int i = 0; i < m - 1; i++) {for (int x = 0; x < n; x++) {if (int p = pa[x][i]; p != -1) {pa[x][i + 1] = pa[p][i];}}}}int get_kth_ancestor(int node, int k) {for (; k; k &= k - 1) {node = pa[node][countr_zero((unsigned)k)];}return node;}int get_lca(int x, int y) {if (depth[x] > depth[y]) {swap(x, y);}y = get_kth_ancestor(y, depth[y] - depth[x]);if (y == x) {return x;}for (int i = pa[x].size() - 1; i >= 0; i--) {int px = pa[x][i], py = pa[y][i];if (px != py) {x = px;y = py;}}return pa[x][0];}int twoPoits_dis(int x, int y) {return depth[x] + depth[y] - depth[get_lca(x, y)] * 2;}
};
class Solution {
public:vector<int> assignEdgeWeights(vector<vector<int>>& edges, vector<vector<int>>& queries) {int n=edges.size(); vector<int> p(n+1);p[0]=1;for(int i=1;i<=n;i++) p[i]=p[i-1]*2%M;LCA_solve g(edges);vector<int> ans(queries.size());for (int i=0;i<queries.size();i++) {int x=queries[i][0]-1;int y=queries[i][1]-1;if (x!=y){ans[i]=p[g.twoPoits_dis(x, y) - 1];}}return ans;}
};

感谢大家的点赞和关注,你们的支持是我创作的动力!(其他细节,有时间再补充...)

 

相关文章:

力扣第157场双周赛

1. 最大质数子字符串之和 给定一个字符串 s&#xff0c;找出可以由其 子字符串 组成的 3个最大的不同质数 的和。 返回这些质数的 总和 &#xff0c;如果少于 3 个不同的质数&#xff0c;则返回 所有 不同质数的和。 质数是大于 1 且只有两个因数的自然数&#xff1a;1和它本身…...

青少年编程与数学 02-019 Rust 编程基础 19课题、项目发布

青少年编程与数学 02-019 Rust 编程基础 19课题、项目发布 一、准备工作1. 创建和配置项目2. 编写代码和测试3. 文档注释 二、构建发布版本1. 构建优化后的可执行文件2. 静态链接&#xff08;可选&#xff09; 三、发布到 crates.io1. Crates.io核心功能使用方法特点最新动态 2…...

【HarmonyOS Next之旅】DevEco Studio使用指南(二十五) -> 端云一体化开发 -> 业务介绍(二)

目录 1 -> 工作原理 2 -> 约束与限制 2.1 -> 支持的设备 2.2 -> 支持的国家/地区 2.3 -> 支持的签名方式 3 -> 总结 3.1 -> 关键功能与工具 3.2 -> 开发流程 3.3 -> 典型场景与优化 3.4 -> 常见问题与解决 3.5 -> 总结 1 -> 工…...

LLaMA-Factory 微调模型与训练数据量对应关系

在使用LLaMA-Factory的LoRA技术微调1.5B和7B模型时&#xff0c;数据量需求主要取决于任务类型、数据质量以及模型规模。以下是基于现有研究和实践的具体分析&#xff1a; 一、数据量需求的核心影响因素 模型规模与数据量的关系 通常情况下&#xff0c;模型参数越多&#xff08…...

数据库与Redis数据一致性解决方案

在写数据时保证 Redis 和数据库数据一致,可采用以下方案,需根据业务场景权衡选择: 1. 先更新数据库,再更新 Redis 步骤: 写入 / 更新数据库数据。删除或更新 Redis 缓存。适用场景:读多写少,对缓存一致性要求不高(短暂不一致可接受)。风险:若第二步失败,导致缓存与…...

Spring Boot AI 之 Chat Client API 使用大全

ChatClient提供了一套流畅的API用于与AI模型交互,同时支持同步和流式两种编程模型。 流畅API包含构建Prompt组成元素的方法,这些Prompt将作为输入传递给AI模型。从API角度来看,Prompt由一系列消息组成,其中包含指导AI模型输出和行为的指令文本。 AI模型主要处理两类消息: …...

分身空间:手机分身多开工具,轻松实现多账号登录

分身空间是一款功能强大的手机分身多开工具APP&#xff0c;专为需要同时登录多个账号的用户设计。它支持多开各种游戏和软件&#xff0c;让用户可以轻松实现多账号同时在线&#xff0c;提升使用效率和体验。无论是社交软件、游戏还是办公应用&#xff0c;分身空间都能帮助你轻松…...

音视频之视频压缩及数字视频基础概念

系列文章&#xff1a; 1、音视频之视频压缩技术及数字视频综述 一、视频压缩编码技术综述&#xff1a; 1、信息化与视频通信&#xff1a; 什么是信息&#xff1a; 众所周知&#xff0c;人类社会的三大支柱是物质、能量和信息。具体而言&#xff0c;农业现代化的支柱是物质&…...

Ubuntu 24.04部署安装Honeyd蜜罐

&#x1f334; 前言 最近有个大作业&#xff0c;里面要求我们部署Hoenyd蜜罐&#xff0c;在网上搜了一通&#xff0c;发现相关的教程竟然少的可怜&#xff0c;即使有比较详细的教程&#xff0c;也是好几年前的了&#xff0c;跟着做一遍报一堆错&#xff0c;无奈之下&#xff0…...

C++复习核心精华

一、内存管理与智能指针 内存管理是C区别于其他高级语言的关键特性&#xff0c;掌握好它就掌握了C的灵魂。 1. 原始指针与内存泄漏 先来看看传统C的内存管理方式&#xff1a; void oldWay() {int* p new int(42); // 分配内存// 如果这里发生异常或提前return&#xff0c…...

Android中获取控件尺寸进阶方案

在Android开发中,很多场景都需要获取控件(View)的宽高信息,比如动态布局调整、动画效果实现等。然而,直接在Activity的onCreate()中调用控件的getWidth()或getHeight()`方法,得到结果却是0,因为控件还没完成布局测量。 本文总结了几种获取控件大小的实用方法,并对各方…...

云原生安全之PaaS:从基础到实践的技术指南

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 云原生安全之PaaS&#xff1a;从基础到实践的技术指南 一、基础概念 PaaS&#xff08;Platform as a Service&#xff09;平台 PaaS是一种云计算服务模型…...

MCP技术体系介绍

MCP,全称时Model Context Protocol,模型上下文协议,由Claude母公司Anthropic于2014年11月正式提出。 MCP的核心作用是统一了Agent开发过程中大模型调用外部工具的技术实现流程,从而大幅提高Agent的开发效率。在MCP诞生之前,不同外部工具各有不同的调用方法。 要连接这些…...

《深入探秘:从底层搭建Python微服务之FastAPI与Docker部署》

FastAPI作为一款现代、快速的Web框架&#xff0c;在Python微服务开发领域独树一帜。它基于Python 3.6的类型提示功能&#xff0c;融合了Starlette和Pydantic的优势&#xff0c;具备诸多令人瞩目的特性。 FastAPI的性能表现十分卓越&#xff0c;可与Go和Node.js相媲美。这得益于…...

深入解析Spring Boot与JUnit 5集成测试的最佳实践

深入解析Spring Boot与JUnit 5集成测试的最佳实践 引言 在现代软件开发中&#xff0c;单元测试和集成测试是确保代码质量的重要手段。Spring Boot作为当前最流行的Java Web框架之一&#xff0c;提供了丰富的测试支持。而JUnit 5作为最新的JUnit版本&#xff0c;引入了许多新特…...

我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南

我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南 一、创建隔离开发环境 1. 使用虚拟环境&#xff08;推荐venv&#xff09; # 在项目目录打开终端执行 python -m venv douban_env # 创建虚拟环境 source douban_env/bin/activate # Linux/macOS激活 douban_env\Scri…...

Selenium 测试框架 - C#

🚀Selenium C# 自动化测试实战:以百度搜索为例 本文将通过一个简单示例,手把手教你如何使用 Selenium + C# 实现百度搜索自动化测试。适合初学者快速上手,也适合作为企业 UI 自动化测试模板参考。 🧩 一、安装必要 NuGet 包 在 Visual Studio 的 NuGet 管理器中安装以下…...

JavaWeb:SpringBoot工作原理详解

一、SpringBoot优点 1.为所有Spring开发者更快的入门 2.开箱即用&#xff0c;提供各种默认配置来简化项目配置 3.内嵌式容器简化Web项目 4.没有冗余代码生成和XML配置的要求 二、SpringBoot 运行原理 2.1. pom.xml spring-boot-dependencies: 核心依赖在父工程中&#xff1b;…...

5.25本日总结

一、英语 复习list6list25 二、数学 写14讲课后题&#xff0c;学习15讲部分 三、408 完成计网5.3题目&#xff0c;学习计组第二章 四、总结 今日所学内容不难&#xff0c;但是英语最近的进度缓慢&#xff0c;单词记忆情况不好&#xff0c;阅读也很久没有再写&#xff0c…...

OpenGL Chan视频学习-6 How Shaders Work in OpenGL

bilibili视频链接&#xff1a; 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 一、知识点整理 1.1 着色器 1.1.1 阐述 实际上是代码。需要告诉GPU发送数据要干啥&#xff0c;也是着色器的本质。…...

dify_plugin数据库中的表总结

本文使用dify-plugin-daemon v0.1.0版本&#xff0c;主要对dify_plugin数据库中的数据表进行了总结。 一.agent_strategy_installations 源码位置&#xff1a;dify-plugin-daemon\internal\types\models\agent.go type AgentStrategyInstallation struct {ModelTenantID …...

【数据仓库面试题合集④】SQL 性能调优:面试高频场景 + 调优策略解析

随着业务数据规模的持续增长,SQL 查询的执行效率直接影响到数据平台的稳定性与数据产出效率。因此,在数据仓库类岗位的面试中,SQL 性能调优常被作为重点考察内容。 本篇将围绕常见 SQL 调优问题,结合实际经验,整理出高频面试题与答题参考,助你在面试中游刃有余。 🎯 高…...

HarmonyOS学习——UIAbility组件(上)

UIAbility组件概述 应用程序有几种界面交互形式 UIAbility&#xff1a;应用程序的入口 概述 UIAbility组件是一种包含UI的应用组件&#xff0c;主要用于和用户交互。 UIAbility的设计理念&#xff1a; 原生支持应用组件级的跨端迁移和多端协同。 支持多设备和多窗口形态。…...

【Linux】磁盘空间不足

错误提示: no space left on device 经典版&#xff08;block占用&#xff09; 模拟 dd if/dev/zero of/var/log/nginx.log bs1M count2000排查 #1. df -h 查看哪里空间不足,哪个分区#2. du -sh详细查看目录所占空间 du -sh /* 排查占用空间大的目录 du -sh /var/* du…...

持续更新 ,GPT-4o 风格提示词案例大全!附使用方式

本文汇集了各类4o风格提示词的精选案例&#xff0c;从基础指令到复杂任务&#xff0c;从创意写作到专业领域&#xff0c;为您提供全方位的参考和灵感。我们将持续更新这份案例集&#xff0c;确保您始终能够获取最新、最有效的提示词技巧。 让我们一起探索如何通过精心设计的提…...

线性代数之张量计算,支撑AI算法的数学原理

目录 一、张量计算的数学本质 1、线性代数:张量的几何与代数性质 2、微积分:梯度与自动微分 3、优化理论:张量分解与正则化 4、张量计算的核心操作 二、张量计算在AI算法中的作用 1、数据表示与处理 2、神经网络的参数表示 3、梯度计算与优化 三、张量计算在AI中的…...

QStandardItemModel的函数和信号介绍

前言 Qt版本:6.8.0 QStandardItem函数介绍 函数 部分函数有不同的重载来适应不同的模型,例如appendrow 构造函数与析构函数 1. QStandardItemModel(QObject *parent nullptr) 说明&#xff1a;创建一个空的模型&#xff08;0行0列&#xff09;。参数&#xff1a; parent&…...

Python 内存管理机制详解:从分配到回收的全流程剖析

在 Python 编程中&#xff0c;开发者无需像 C/C 那样手动分配和释放内存&#xff0c;但这并不意味着内存管理与我们无关。了解 Python 内存管理机制&#xff0c;能帮助我们编写出更高效、稳定的代码。接下来&#xff0c;我们将深入剖析 Python 内存管理的各个环节&#xff0c;并…...

【报错】Error attempting to get column ‘created_time‘ from result set.解决方法

postman报错以下内容 {"code": "500","msg": "查询失败&#xff1a;Error attempting to get column created_time from result set. Cause: java.sql.SQLFeatureNotSupportedException\n; null; nested exception is java.sql.SQLFeatur…...

Redis 3.0~8.0特性与数据结构全面解析

目录 引言 第一部分&#xff1a;Redis版本演进与核心特性 Redis 3.0&#xff08;2015年&#xff09;&#xff1a;分布式架构的里程碑 Redis 4.0&#xff08;2017年&#xff09;&#xff1a;模块化与性能优化 Redis 5.0&#xff08;2018年&#xff09;&#xff1a;流数据结构…...