Jzoj4888 最近公共祖先

Python小白避坑指南:用Ursina做3D图形,Entity的scale和color参数到底怎么调才不出错? 本文详细解析了Python Ursina引擎中Entity对象的scale和color参数调优技巧,帮助3D图形编程初学者避开常见陷阱。通过对比实验和典型场景分析,深入讲解三种缩放方式的区别、颜色定义的四种方法,以及参数组合的协同效应,助力开发者精准控制3D图形表现。 阅读详情

YJC最近在学习树的有关知识。今天,他遇到了这么一个概念:最近公共祖先。对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。YJC很聪明,他很快就学会了如何求最近公共祖先。他现在想寻找最近公共祖先有什么性质,于是他提出了这样的一个问题:n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度的和是多少。这个数字n层的满k叉树指一棵带标号的有根树,深度为i(0≤i<n)的点有k^i个,所有深度≠n-1的点都有k个孩子。YJC发现他不会做了,于是他来问你这个问题的答案。这个答案可能很大,你只需要告诉他答案%998244353的值就可以了。

​对于30%的数据,满足2≤n,k≤8;
对于50%的数据,满足2≤n,k≤1000000;
对于100%的数据,满足2≤n,k≤998244351。

显然不是叫你写lca吧。。。

对于每个节点我们考虑他的所有子节点能构成多少对

选取一个节点x,设其所在子树大小为size

一个节点s能和不在同一个子树内的所有节点匹配,所以就有size*(k-1)/k种选择方法

所以x的贡献=deep[x]*size*size*(k-1)/2k

但是这样不够快,我们需要得到O(lg N)的做法

推导出(k-1)Answer=Σi*(k^(2n-i-1)-k^i){i∈[0,n)}

继续利用 Σi*k^i {i∈[0,n)}=n*Σk^i - ΣΣk^j {j∈[0,i)} 和等比数列求和公式

我们得到

Answer=k^2n-k-(2n-1)*k^n*(k-1)/(k-1)^3

可以用快速幂+逆元求解

完成(这就是一道数学计算题嘛)

#include<stdio.h>
#define M 998244353
#define L long long
L pow(L x,int k){
	L S=1;
	for(;k;x=x*x%M,k>>=1)
		if(k&1) S=S*x%M;
	return S;
}
int main(){
	freopen("lca.in","r",stdin);
	freopen("lca.out","w",stdout);
	L n,k,S; scanf("%lld%lld",&n,&k);
	S=pow(k,n*2);
	S=(S-k-(2*n-1)*pow(k,n)%M*(k-1)%M+M+M)%M;
	L inv=pow(k-1,M-2);
	S=S*inv%M*inv%M*inv%M;
	printf("%lld\n",S);
}


Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.6 在kernel 中实现系统复位和系统关机驱动 上一章节`Qemu`篇我们已经实现了我们`SOC`的`power reset`和 `power down` 寄存器,本章节我们就在`Linux driver`中去实现它 阅读详情

相关推荐

算法面试准备 - 手撕系列第五期 - 单头注意力机制(包括Self_atten和Cross_atten)

算法面试准备 - 手撕系列第五期 - 单头注意力机制(包括Self_atten和Cross_atten)

m0_62030579的博客 3606

7-5 二叉搜索树的最近公共祖先 离散化后用数组存树

给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。 输入格式: 输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。最后 M 行,每行给出一对整数键值 U 和 V。所有键值都在整型int范围内。 输出格式: 对每一对给定的 U 和 V,如果找到 A 是它们的最近公共祖先结点的键值,则在一行中输出 LCA of U and V is A.。但如果 U

wow_awsl_qwq的博客 1236

iOS逆向实战:绕过SSL Pinning抓取ChatGPT设备令牌

在移动应用安全与网络协议分析领域,中间人攻击是一种核心的流量拦截与分析技术。其原理是在客户端与服务器之间插入一个代理节点,通过伪造数字证书来解密和窥探HTTPS加密流量。这项技术的工程价值在于,它使开发者能够调试API、分析通信协议以及实现自动化集成。然而,许多高安全要求的应用(如金融、社交类App)会采用SSL Pinning(证书绑定)技术来抵御此类攻击,这为逆向工程带来了挑战。本文聚焦于一个具体的应用场景:如何针对启用了SSL Pinning的ChatGPT iOS客户端,通过特定的工具链(如Trol

weixin_28235889的博客 969

7-6 二叉搜索树的最近公共祖先 (30 分)

给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。 输入格式: 输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。最后 M 行,每行给出一对整数键值 U 和 V。所有键值都在整型int范围内。 输出格式: 对每一对给定的 U 和 V,如果找到 A 是它们的最近公共祖先结点的键值,则在一行中输出 LCA of U and V is A.。但如果 U

xxxibgdrgn博客 3019

发那科机器人编程软件fanuc roboguide授权补丁_工业机器人离线编程与应用:ROBOGUIDE V8.3版本的工程文件创建...

欢迎关注我们ROBOGUIDE是发那科机器人公司提供的一个离线编程工具,可模拟现实中的机器人和周边设备的布局,通过虚拟TP示教来模拟机器人的运动轨迹,同时可以验证方案的可行性和准确的周期时间。ROBOGUIDE是一款核心应用软件,具体的还包括搬运、弧焊、喷涂等其他模块。以最新的8.3版本为例进行讲解,对于未注册的版本将有30天的免费使用期限。开始菜单击开始菜单中的HandingPRO启动程序,第一...

weixin_39791446的博客 2923

k-Wave仿真例程:创建超声换能器并绘制声场分布

k-Wave软件是为了模拟超声波在1D、2D或3D中的传播。应用示例包括:- 均匀和非均匀介质中的传播- 模拟各种类型的传感器- 模拟多普勒效应- 衍射、折射和反射- 光声、超声成像- 波束合成、成像重建- 模拟弹性波。

weixin_38452364的博客 6324

LeetCode二叉树系列——235.二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root =[6,2,8,0,4,7,9,null,null,3,5] ......

w20001118的博客 1309

FPGA以太网开发实战:YT8511 PHY芯片MDIO接口配置全流程(附Verilog代码)

本文详细介绍了FPGA以太网开发中YT8511 PHY芯片MDIO接口的配置全流程,包括MDIO接口技术解析、Verilog状态机设计、核心代码实现细节及实战调试经验。通过提供经过验证的Verilog代码和优化策略,帮助开发者快速掌握以太网PHY芯片配置技术,提升通信系统性能。

weixin_29184371的博客 232

二叉树:找出两个节点的最近公共祖先

一、问题描述 给定二叉树(不是二叉搜索树)和两个节点 n1 和 n2,编程实现找到二者的最近公共祖先(Lowest Common Ancestor,LCA)。 二、思路分析 LCA定义:最近公共祖先是两个节点所有公共祖先中离根节点最远的节点。从根开始遍历树,如果任一给定节点(n1和n2)与根匹配,则根为 LCA。如果根与任何节点都不匹配,重复左右子树中寻找节点 n1 和 n2。如果在其左子树中存在一个节点而在右子树中存在的另一个节点,则此节点即为 LCA。如果两个节点都位于左子树中,则 LCA 也位于左子

ChineseSoftware的博客 5789

手把手教你用Simulink搭建单相全桥逆变器(附单电流闭环控制仿真文件)

本文详细介绍了如何在Simulink中搭建单相全桥逆变器并实现单电流闭环控制。从功率主电路建模、核心器件参数设置,到控制系统的PI调节与前馈补偿,提供了完整的仿真步骤与调试技巧。文章旨在通过动手实践,帮助读者跨越理论与仿真的鸿沟,深入理解电力电子闭环控制的核心原理。

d6e7f8g9h的博客 316

STM32Cube高效开发教程<基础篇>(一)----概述

一、 STM32系列器件和开发工具发展历史声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。一、 STM32系列器件和开发工具发展历史。

我的博客 187

Leetcode 235. 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] 示例 1: 输入: root = [6,2,...

hello_my_coder的博客 405

基于QT与STM32的电力参数采集系统(华为云IOT)(211)

本项目构建一款集多功能于一体的电力参数采集系统,该系统以高性能、低功耗的STM32F103RCT6微控制器为核心,集成多种传感器与通信模块,实现对电力设施如电压、电流、功率、电能及环境温度等关键参数的实时精确采集,并通过GPS模块获取设备地理位置信息,满足了电力设备状态全面监控的需求。

2900

【jzoj4888】【最近公共祖先】

题目大意n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度的和是多少。这个数字n层的满k叉树指一棵带标号的有根树,深度为i(0≤i解题思路显然得出ans=∑n−1i=1i∗ki∗(((kn−i−1)/(k−1))2−k∗((kn−i−1−1)/(k−1))2)ans=\sum_{i=1}^{n-1}i*k^i*(((k^{n-i}-1)/(k-1))^2-k

inklutcuah’s blog 396

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jzoj4888 最近公共祖先

题目描述n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度的和是多少。这个数字n层的满k叉树指一棵带标号的有根树,这个答案可能很大,你只需要告诉他答案%998244353的值就可以了。 ​对于30%的数据,满足2≤n,k≤8; 对于50%的数据,满足2≤n,k≤1000000; 对于100%的数据,满足2≤n,k≤998244351。 (背景有删减)

一位蒟蒻的小博客 417

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

JZOJ 4888. 【NOIP2016提高A组集训第14场11.12】最近公共祖先

JZOJ 4888. 【NOIP2016提高A组集训第14场11.12】最近公共祖先 注意到每一层的结点作为 lca 的贡献是相同的。 设当前的结点的深度为 ddd, 深度为 ddd 的子树大小为 szdsz_dszd​。 那么这个结点的贡献是 szd+12k(k−1)+2szd−1sz_{d+1}^2k(k-1)+2sz_d-1szd+12​k(k−1)+2szd​−1。 比较显然的 szd=∑i=dn−1ki−dsz_d=\sum_{i=d}^{n-1}{k^{i-d}}szd​=∑i=dn−1​ki−

linweitong2020的博客 324

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【JZOJ4888】【NOIP2016提高A组集训第14场11.12】最近公共祖先

题目描述YJC最近在学习树的有关知识。今天,他遇到了这么一个概念:最近公共祖先。对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。YJC很聪明,他很快就学会了如何求最近公共祖先。他现在想寻找最近公共祖先有什么性质,于是他提出了这样的一个问题:n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度

=w= 470

JZOJ4888【NOIP2016提高A组集训第14场11.12】最近公共祖先

DescriptionYJC最近在学习树的有关知识。今天,他遇到了这么一个概念:最近公共祖先。对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。YJC很聪明,他很快就学会了如何求最近公共祖先。他现在想寻找最近公共祖先有什么性质,于是他提出了这样的一个问题:n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,

dance in th dark的博客 495

JZOJ 4888 【NOIP2016提高A组集训第14场11.12】最近公共祖先

最近公共祖先题目大意给出一棵有n层的满k叉树,深度为ii (00 ≤ ii < nn) 的点有kik^i个,所有深度≠nn-11的点都有kk个孩子,根节点的深度为00,求对于每一对点对(ii,jj)(11≤ii,jj≤TT的点数),LCALCA(ii,jj)的深度的和是多少。数据范围对于100100%的数据,满足22≤nn,kk≤998244351998244351。题解Code(Pascal)首先

XianHaoMing的博客 580

2021.08.21【NOIP提高B组】模拟 总结

2021.08.21【NOIP提高B组】模拟 总结 第一题:数学题。见 JZOJ 4888. 【NOIP2016提高A组集训第14场11.12】最近公共祖先。 第二题:给出若干个欧拉回路求合并最小代价。显然是个最小生成树。 第三题:求出从父亲到儿子的期望。直接换根 dp。 第四题:二分答案。用 dp 维护计算答案。用线段树维护即可。 ...

linweitong2020的博客 298

面试题68:二叉搜索树的最近公共祖先

面试题68:二叉搜索树的最近公共祖先 (1)给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 // 二叉搜索树! class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(p->val > q->val) // 保证p<val < q->val { T

m0_56077202的博客 729

一日一练:二叉搜索树的最近公共祖先

因为是二叉搜索树,所以两个节点的公共祖先节点会满足: 祖先节点的值大于较小节点的值且小于较大节点的值。又因为一个节点也可以是他自己的祖先节点,所以值相等也是符合的。递归查找

qq_41494959的博客 355

PTA 二叉搜索树的最近公共祖先

题目 .给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。 输入 输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。最后 M 行,每行给出一对整数键值 U 和 V。所有键值都在整型int范围内。 输出 对每一对给定的 U 和 V,如果找到 A 是它们的最近公共祖先结点的键值,则在一行中输出 LCA of U and V is A.。但如

QYQHxyh的博客 5801

二叉搜索树的最近公共祖先

输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。如果 二叉搜索树中找不到以 U 或 V 为键值的结点,则输出。但如果 U 和 V 中的一个结点是另一个结点的祖先,则在一行中输出。是它们的最近公共祖先结点的键值,则在一行中输出。对每一对给定的 U 和 V,如果找到。是那个祖先结点的键值,

笔记 1134
上一篇: Jzoj5441【NOIP2017提高A组冲刺11.1】序列
下一篇: Jzoj4889 最长公共回文子序列
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值