• 2024-02-2124/02/21 染色问题
    题目描述给定一棵\(n\)个节点的树,你想把编号为\(i\)的叶子节点染成\(a_i\)的颜色。你本来可以一个节点一个节点的涂,但你觉得这样太慢了,你决定这样染色:选择一个节点\(x\)和一种颜色\(c\),然后把这个颜色的颜料桶直接倒在节点\(x\)上,使\(x\)的所有子树都染成\(c\)
  • 2024-02-16重链剖分
    重链剖分优先走重儿子,路径跳不超过\(O(\logn)\)intsiz[N],fa[N],dep[N],top[N],dfn[N],hson[N],dfc;//注意每个都要处理voiddfs1(intx,intFa){ fa[x]=Fa; siz[x]=1; hson[x]=0; for(inti=h[x];i;i=e[i].ne){ inty=e[i].to; if(y==Fa)continue; dep[y]=dep[
  • 2023-12-20CF1914F Programming Competition
    原题链接感觉有点类似agc034eCompleteCompress,但那题比这个难得多。定义\(f_x\)为以\(x\)为根的子树中,尽可能组队后最多剩下多少人,\(siz_x\)为子树大小。记\(y\inson(x)\)中\(f_y\)最大的点为\(hson_x\)。当\(\sum\limits_{y\inson(x),y\not=hson_x}siz_y<
  • 2023-10-041
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e6+3,INF=1e9;intn,m,q,tot,col[N],hson[N],sz[N],fa[N],res[N],num[N],pos[N],cur[N],ans[N];structSet{ intr,id; friendbooloperator<(Seta,Setb){returna.r!=b
  • 2023-08-05树上数据结构
    树上问题树链剖分学习笔记重链剖分对树进行重链优先搜索,暴力求一条路径的复杂度为logn模板voidtree_build(intu,intfa){//重链优先搜索 siz[u]=1; f[u]=fa; hson[u]=0; for(auto&v:adj[u]){deep[v]=deep[u]+1; if(v==fa)continue; tree_build(v,u);
  • 2023-07-29P3979 遥远的国度 题解
    P3979遥远的国度题意一棵树,\(n\le10^5\),三个操作,\(m\le10^5\),点带权。换根路径推平子树查最小值思路如果没有换根,操作2,3是裸的树剖,考虑换根后的询问如何处理。显然不能再做一遍树剖,只能假装我们换根了,询问可以分成四种情况,令原根为\(root\),新根为\(id\),查询点
  • 2023-05-20换根问题
    例题:P3979遥远的国度这是个树上查询子树信息问题。一开始一定会给出一个根,接下来会给出一些换根操作(就是让某个节点作为新的树根),在某个换根操作以后,接下来的操作(就是查询)会按照刚才缓过来的根进行查询。因为不论换根前后,这棵树的整体结构形态不变,变的只是节点与节点之间的父子关
  • 2023-05-04树链剖分学习笔记
    一棵树,支持:路径加单点查询一般树上链的问题使用树链剖分解决。重链剖分前置知识LCA,线段树定义重儿子:所有儿子中子树最大的儿子为重儿子重边:重儿子之间的连边重链:若干重儿子连成的链性质一棵树可以被剖成若干重链。优先遍历重儿子,所有重链的dfs序连续。重链数量不
  • 2022-12-22BZOJ 3252 攻略(长链剖分模板 链的常用性质 贪心)
    BZOJ3252攻略​ 给定一棵带边权的树,选择k个叶子结点,使这些叶子结点与根节点相连,形成k条路径。输出被路径覆盖的所有边的边权和的最大值(同一条边若被重复覆盖只算一
  • 2022-11-13动态 dp 学习笔记
    好耶!来学新算法了(最近停课了就有时间学算法啦因为CSP-S考了个什么ddp然后我不会(CSP炸了)学了一个晚上加一个上午才学会(我太菜了)嗯嗯其实说起来是个很简单的东西.前
  • 2022-10-28Educational Codeforces Round 138 F Distance to the Path
    DistancetothePath思维+树链剖分首先与树链剖分无关,先考虑如果只更新一个点的情况因为更新一个点,它既能向根的方向更新,又能向子树方向更新,非常难维护,于是我们只
  • 2022-09-19Codeforces Round #316 (Div. 2) D Tree Requests
    TreeRequests判断\(V_i\)的子树中,深度为\(h_i\)的结点上所带有的字符,能否组成一个回文串启发式合并维护所有深度上不同字符的数量,并且维护其奇数字符出现的次数如
  • 2022-09-19Codeforces Round #221 (Div. 1) D Tree and Queries
    TreeandQueries询问\(V_j\)的子树中,有多少种颜色出现了\(K_j\)次启发式合并最直接的,树上启发式合并的同时维护颜色出现的次数,然后再拿一个数组记录一下出现了\(i
  • 2022-09-19Codeforces Round #151 (Div. 2) E Blood Cousins Return
    BloodCousinsReturn启发式合并在跑启发式合并的同时,对每个深度都维护一个\(set\),就可以自动去重并计算有多少种不同的字符串#include<iostream>#include<cstdio>