Lca
  • 2025-01-22RMQ 和 LCA 问题
    #Part1RMQRMQ,即区间信息维护问题如最大值,最小值,GCD等RMQ算法实现很多具体有线段树,树状数组和ST表但综合时间复杂度最好的是ST表查询O(1),预处理O(nlogn)ST表的基础思想是二进制倍增记录一个ST[i][j]数组记录一下从lable[i]开始长度为2^j区间
  • 2025-01-22图论相关问题
    图论相关问题A.P2662牛场围栏同余最短路的板题,会了就没什么。见这篇。B.P4211[LNOI2014]LCA感觉离线处理的技巧得多加磨练。这题的暴力显然就是\(O(nm)\)或\(O(nm\logn)\),暴力枚举\([l,r]\)和\(z\)的LCA的\(\text{dep}\)值,计算即可。那么正解要么就是一次
  • 2025-01-17Ynoi 杂题选做。
    我要加训ds。Ynoi2011成都七中标算其实是点分树上直接做,但是我并没有很懂。先只考虑\(l\)的限制,将树边边权设为\(min(u,v)\),直接跑Kruskal重构树,于是\(x\)所在连通块就是重构树上的一个子树(子树根可以通过倍增跳上去找到)。\(r\)限制同理,于是所求即为同个点集构成的
  • 2025-01-16倍增求lca
    非常重要的东西我甚至模拟赛都不打了来打笔记很简单啊,朴素lca是这样,两个节点,先令深度相等,然后一个一个往上跳直到跳到相同的位置则那个点为两点的lca但是令深度相等与往上跳的过程都要一个一个慢慢跳所以时间复杂度拉满了那么我们能以什么方式优化呢我们可以发现,每个数都可以
  • 2025-01-10P4069 [SDOI2016] 游戏
    P4069[SDOI2016]游戏题目描述Alice和Bob在玩一个游戏。游戏在一棵有\(n\)个点的树上进行。最初,每个点上都只有一个数字,那个数字是\(123456789123456789\)。有时,Alice会选择一条从\(s\)到\(t\)的路径,在这条路径上的每一个点上都添加一个数字。对于路径上的一个点
  • 2025-01-092024.12 做题记录
    [CF2042D]Recommendations\(\text{Link}\)发现所求即为包含\([l,r]\)的所有区间的交的长度减去\([l,r]\)的长度。考虑所有包含\([l,r]\)的区间\([L,R]\),不难发现其满足\(L\lel,r\leR\)。由于我们要求交,所以求出满足该条件的\(L\)的最大值和\(R\)的最小值即可。扫
  • 2025-01-07虚树 Virtual Tree
    更新日志2025/01/07:开工。概念在很多树上问题中,我们会发现,实际需要的,只有几个关键点。那么我们就可以针对这些关键点进行操作。更具体地,建一棵规模更小的,但是仍能完成要求的浓缩过的树,即为虚树。思路简介首先,常识可得:除了关键点,关键点两两的\(\text{LCA}\)也需要储
  • 2025-01-05B. 树上的回忆 (memory) 题解
    \(dis(i,j)\)有两种转换方式,第一种是统计每条边被经过了多少次,第二种是变成\(\sum_{i=l}^{r}\sum_{j=l}^{r}dep(lca(i,j))\)。这里采用第二种(因为第一种寄了)。先考虑暴力,采取换根DP:把\([l,r]\)建一棵虚树。对于一个点\(x\)尝试计算\(\sum_{y}dep(lca(x,y))\)。\(y\)
  • 2024-12-31NOIP2024 游记
    花开于尘世梦乡,何不着不遗余力去绽放。写于赛前不觉间,又是清秋至。从去年12月到现在,我参加了那么多比赛,认识了那么多人,取得了那么多并不显眼却令我满意的成绩。一年过去,平衡树还是没有完全学懂,但是图论和DP也还是强了些吧。至少现在的我不会再因为有不懂的算法而痛失分数
  • 2024-12-26集训【做题记录】
    12/16303784.背包问题(knapsack)考虑贪心,假设一开始放进全是第一个背包,那么此时如果改成选放进第二、三个背包增加的价值为\((w_{i,2}-w_{i,1}),(w_{i,3}-w_{i,1})\)分别设为\(a,b\)。问题转化为了选\(V_2\)个\(a\),选\(V_3\)个\(b\),使得总价值最大。邻项交换法,交换选
  • 2024-12-25P10952 聚会 题解
    题目链接题目大意对于一棵树,求出一个点对于给定的三个点(以下简称$x$,$y$,$z$且可以重复)距离最短。题解对于点的距离,不难想到LCA处理。而对于本题,则有两种情况。第一问三点中有一为另外两个点的祖先时,所求目标点(以下简称$v$)的深度(简称$d_v$)一定在三点深度之间。三
  • 2024-12-23链剖分总结
    来解决树上DS问题。因为没有能够直接高效维护树型结构的DS,于是把树剖分成链,然后拿序列上的DS去维护每一条链的信息。树链剖分有很多种:轻重链剖分,长链剖分,虚实链剖分。轻重链剖分这里是轻重链剖分。常数很小。其实不一定要用线段树维护,但用线段树维护是最常见的。支持换根,路
  • 2024-12-23最近公共祖先(LCA)笔记
    最近公共祖先(LCA)笔记【模板】最近公共祖先(LCA)题目入口题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数\(N,M,S\),分别表示树的结点个数、询问的个数和树根结点的序号。接下来\(N-1\)行每行包含两个正整数\(x,y\),表示
  • 2024-12-22题解:AT_abc294_g [ABC294G] Distance Queries on a Tree
    题目链接https://www.luogu.com.cn/problem/AT_abc294_g分析先不考虑修改。设\(dist_i\)表示从根节点到第\(i\)号节点的距离,\(\operatorname{lca(u,v)}\)表示树上两点\(u,v\)的最近公共祖先,那么\(u,v\)两点间的距离就是\((dist_{\operatorname{lca(u,v)}}-dist_u)+(
  • 2024-12-21[CTSC2018] 暴力写挂
    两棵树,考虑枚举第一棵树的LCA。由于贡献是对称的,用dsuontree把答案变成\(O(n\logn)\)个询问。每个询问形如:查询第一棵树上dfn在一个区间里的点\(p\in[l,r]\)和点\(u\)在第二棵树上的LCA的深度和\(p\)的权值和的最大值。可以在第二颗树上DFS的过程中维护每
  • 2024-12-20[CERC2014] Parades 题解
    感觉长脑子了。考虑在路线两端点的\(lca\)计算贡献,那么线段可以分两类:\(u\)为\(v\)祖先。\(u,v\)互不为祖先。设\(dp_i\)表示只考虑\(i\)子树内的路线时的答案。引理\(1\):若插入一条以\(i\)为\(lca\)的路径会使以\(i\)的儿子为\(lca\)的路径数量减少,
  • 2024-12-16[SCOI2016] 幸运数字 题解
    \(xor\)最大值想到线性基,路径想到\(lca\)和树链剖分,由于没有修改用\(lca\)就可以。先用处理\(fa\)数组的方式处理倍增线性基(自然是得用线性基合并的),在求\(lca\)时把所有线性基全部合到一块儿就行。考虑到本题实际上核心在于让路径上的线性基数量\(\leO(\logn)\),所以
  • 2024-12-14NOIP2024
    T1显然,若\(t[l,r]\)均为\(\texttt1\),会让\(s[l,r]\)可以任意重排。从左到右按位匹配,考虑让一位匹配的代价,可能会让其后面缺少一个数进行匹配,也就是后面的答案最多减少\(1\)。而匹配一位已经有了\(1\)的贡献,故贪心匹配一定不劣。预处理后暴力匹配即可,附上赛时代码。#in
  • 2024-12-12倍增求LCA_例题
    最近公共祖先(LCA)https://www.luogu.com.cn/problem/P3379点击查看代码#include<bits/stdc++.h>#defineIOSios::sync_with_stdio(false),cin.tie(0),cout.tie(0)usingnamespacestd;constintN=1e6+5;constintLogN=20;intn,q;longlongdep[N],father[N][LogN+1];
  • 2024-12-09Contest7519 - 虚树计算
    ContestA消耗战(弱化版)题意:只有一组询问的消耗战(B题)。这个题跟虚树没有半点关系。只是为B题做准备。令\(f_u\)为切断\(u\)与其子树内所有关键点的最小代价(不需要考虑\(u\)是关键点的情况)。答案为\(f_1\)。令\(mi_u\)为\(1\rightsquigarrowu\)的最小边权(特别
  • 2024-12-08NOIP 2024 游记
    别让我担心派蒙可爱!天气晴风平浪静沙滩上混乱的脚印钓鱼竿两份孤单会飞的落汤鸡是故事的开局青橙紫绿留影机塞满了回忆可我却无比思念遇见你的那一集才发现我们早已走了很远很远多少遍四目相对感叹幸亏幸亏我想起一句花语突然想送给你摘一朵纯白色的花
  • 2024-12-07NOIP 2024 题解
    NOIP2024题解T1首先对于两个串都不能动的位置,直接统计是否相等。对于连续的一段能动的位置,这一段的数可以随便交换,可以预处理每个位置属于哪一段,以及这一段中0和1的个数。我们贪心地考虑,优先匹配一个串能动,另一个串不能动的位置。可以感受到,先把不能动的位置匹配掉后,剩
  • 2024-12-06P6329 【模板】点分树 | 震波
    P6329【模板】点分树|震波来补点分树模板的题解了:先明确一下点分树的定义:又很多个重心构成的一棵树,且树上的层数关系对应重心的大小那么我们为什么要建这一颗树呢:因为我们要处理多组询问并且又修改.然后点分树的建树方式其实在定义中就几乎给出了,就是在求重心时将新老重心
  • 2024-12-04NOIP2024 游记
    比赛历程保持以往的策略,先将每一道题都想一遍。T1想了一个贪心,简单地证明感受了一下正确性。接着T2想了一个计数DP,感觉上它是对的。然后T3还是计数,一样简单地推了一个DP然后去看T4。这时莫名的感觉时间有点紧,于是没有想多,想了一个可以拿到不错的分数的暴力就开始打代码
  • 2024-12-0412.04 CW 模拟赛 T2.树的链接
    算法全都想到了,不会读入和\(\rm{LCA}\)直接把赛时记录的拉过来对于\(50\%\)的数据点,直接输出\(-1\)即可前\(20\%\)直接预处理即可注意到一个很强的性质,即保证在此之前在城市\(x\)与\(y\)之间不存在任何路径也就是说每次连边都是加入割边,最终的图一