首页 > 其他分享 >语言 题解

语言 题解

时间:2024-09-15 16:25:34浏览次数:11  
标签:语言 题解 压位 lca 跨过 log

语言 题解

本题其实没有什么好说的,主要是提供一种强大的,神秘的,诡异的,跑得飞快的,逆天的,唐诗的双 \(\log\) 做法

首先考虑将答案分类,分成跨过这个语言的 lca 的和没跨过的

对于没跨过的,可以发现就是对于每个点,求能扩展到的深度最低的节点,这个直接暴力做就是 \(O(n)\) 的,所以说我们直接考虑第二种情况

发现可以对每个 lca 分别做,很容易发现一个点能配对的有和自己配对的一条链,还有所有子树里的链的并集,发现可以直接建出来虚树之后链推平,线段树合并

现在我们就做完了,复杂度 \(O(n\log^2n)\),但是有一个 \(\log\) 是树剖的,另一个可以压位优化,整体常数极小,即使不使用压位优化也能轻取洛谷最优解

对于正解,发现是维护子树虚数大小,支持删

标签:语言,题解,压位,lca,跨过,log
From: https://www.cnblogs.com/hzoi-wang54321/p/18415333

相关文章

  • 条件编译 - 代码裁剪的工具 --进阶C语言
    目录条件编译-代码裁剪的工具为何要有条件编译条件编译都在那些地方用?见一见条件编译的代码宏是否被定义vs宏是否为真or假编译器也能够自动帮你加上宏GCCVS2023-VS2019#ifdef/#ifndef#if注意事项让#if和#ifdef/#ifndef完全一样条件编译也支持嵌套一个使用#ifdefined能起到很......
  • 题解:AT_pakencamp_2019_day3_d パ研軍旗
    题意简述给定\(5\)行\(N\)列的网格,每个格子有四种可能的颜色。要使网格中每一列的颜色都一样但不能是黑色,并且相邻两列的颜色不相同。问最少改变多少个格子的颜色能满足要求。思路分析为方便处理,把给定的红色、蓝色、白色、黑色分别转成数字\(1,2,3,4\)。考虑dp。不妨......
  • 题解:AT_abc371_c [ABC371C] Make Isomorphic
    题目大意有两个简单无向图,你每一次可以给第二个图添上或去掉一条边,有相应花费,问将两个图变为同构最少需要花费多少钱。思路观察数据范围,可以发现NNN非常小,可以考虑枚......
  • 「KDOI-06-S」题解
    T2树上异或题面分析树形DP题考虑一颗子树内部的某种割边方式,假设其被分为\(n\)个连通块,每个连通块的权值分别为\(a_1,a_2,\dots,a_n\),那么该子树在这种割边方式下对答案的贡献就为\(\prod_{i=1}^{n}a_i\)。因此就可以从叶子向根不断合并,求出每种割边状态的值,时......
  • 【洛谷 P1596】[USACO10OCT] Lake Counting S 题解(深度优先搜索)
    [USACO10OCT]LakeCountingS题面翻译由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个的网格图表示。每个网格中有水(W)或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,......
  • 【Go语言】quic-go实现0-RTT传输
    核心思路:在客户端的tls文件中缓存第一次连接留下来的会话票据,在第二次连接中就可以实现0-RTT。为此,重要的是实现tls.Config.ClientSessionCache这个接口的具体结构体文件目录tlscfg.go代码:这个模块主要用于实现客户端和服务器的tls配置packagetlscfgimport( "crypto......
  • Lua云函数如何设置签名和时间戳校验(按键精灵、懒人精灵等任何语言均可调用)
    Lua云函数工具如何设置签名校验以及时间戳验证前景回顾→Lua云函数的对接和使用http://t.csdnimg.cn/pcIjS添加过[签名校验][时间戳验证][数据加密]任意一项,项目颜色会变成橙色点击[管理项目加密]按钮后会进入下方界面,这次的教程主要讲解如何进行[签名校验......
  • Lua云函数(按键精灵、懒人精灵等任何精灵或语言均可调用)
    Lua云函数安装视频教程>本教程不对安装进行讲解,仅教学如何创建以及对接!>[哔哩哔哩]https://b23.tv/Wam52Ty创建第一个Lua云函数项目一、点击[添加新的项目]按钮二、输入[项目名称]推荐使用英文三、进入到了[创建项目]界面,将Lua代码填入进去该......
  • 深入理解 C 语言中的结构体 —— 原理与实践
    引言在C语言中,结构体是一种非常强大的数据类型,用于组织不同类型的数据成员。通过结构体,我们可以创建复杂的数据结构,用于表示现实生活中的对象。本文将详细介绍C语言中结构体的基本概念、语法、使用方法以及一些高级主题,包括底层原理和具体应用。结构体基础知识定义......
  • Codeforces Round 972 (Div. 2) 2005C. Lazy Narek 题解
    原题链接:https://codeforces.com/contest/2005/problem/C看了教程发现都是用dp做的,在这里分享一个差不多的SPFA的思路(赛场上忘了Dijkstra不能有负边所以炸了)时间复杂度与dp同样是O(nm)形式化题意和翻译:有n个长度为m的字符串,你可以选择或不选择来拼接它们,但是不能更改字符串的......