ICode9

精准搜索请尝试: 精确搜索
  • 浅析NOIP中的图论【2】2021-10-03 14:32:50

    3.LCA的综合运用 lca基础芝士 (1)树上差分 在序列中,我们定义其前缀和与差分序列,把区间的增减转化为左端点加1,右端点减1,根绝差分序列的前缀和是原序列这一原理,在树上也可以进行类似的简化,其中“区间操作”对应“路径操作”,“前缀和”对应“子树和” 经典模型:给定一张无向图和一棵生

  • 题解[P2664 树上游戏]2021-10-03 10:02:10

    题目链接 题意: 记 \(i\) 到 \(j\) 的路径颜色数为 \(s(i,j)\),对每个 \(i\) 求 \(sum_i=\sum\limits_{j=1}^n s(i,j)\) \(\text{Solution}\) 考虑在点分治时 \(\text{dp}\) 设当前分治重心为 \(x\) , 正在处理子树 \(y\) 中全部点此时的贡献。 对每个颜色考虑 \(x\) 子树内出除 \(y

  • 题解 树上竞技2021-10-03 06:31:06

    传送门 有几档暴力不会写,巨丢人 \(m=2\) 的话两个人之间的距离会覆盖整棵树上所有可能的路径,所以就是求所有树上路径长度的总和 成链且 \(m\) 为奇数的话,集中点肯定是中位数那个点 考场上想偏了,只会用这个性质求一些给定的人应该集中在哪个点 但实际上可以枚举中位数这个点,求出一

  • Luogu 3302 森林(树上维护主席树)2021-09-20 23:05:40

    P3302 [SDOI2013]森林 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)P3302 [SDOI2013]森林 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 大概就是要在树上搞第k小吗,还要支持合并 讲实话第一反应树剖+线段树维护,然后就傻掉了 讲正解:每一个节点开一颗主席树维护从该节点到根节点

  • P3178 - 树上操作2021-09-17 16:36:08

    没什么特殊的一道树链剖分板子题,可以作为树剖入门题 操作1单点修改即可 操作2和操作3为树链剖分基础操作   #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<queue> using namespace std; #define lid (id << 1) #define

  • Codeforces Global Round 16 E-Buds Re-hanging 树上搜索/树上dp2021-09-16 22:05:49

    题目链接 题目大意 给你一棵树 根节点为1 规定一种节点为树芽: 1树芽不能是根节点 2树芽不能是叶子节点 3树芽的所有子节点都是叶子节点 树芽可以任意移动 即:树芽可以切断自己与父节点的联系 然后带着自己的子孙们 链接任意节点 可以移动无数次 问你如何移动会让最后树的所有叶子

  • P1272 重建道路 | 树上背包2021-09-16 19:03:21

    题目描述 从一棵树上选择数量最少的边断开 使得拆出的子树大小为P 题解 树上dp 设 \(f[i][j]\) 表示子树i中拆分出j个节点 需要最少删去多少边 考虑树上背包的模板 我们对于一个节点now 合并时候 把该节点的每个子树看成一个组 子树中每一个点看成物品进行分组背包 由于每个非根节

  • 树上差分(poj3417)2021-09-08 16:33:47

    传送门 对题意的转化其实挺巧妙的。 可以看出来是在树上再加“附加边”,加了附加边的即形成环。形成环的定要删除一条主要边和一条附加边才能分为两部分。 如添加了附加边(x,y),相当于x到y的所有“主要边”被覆盖一次。 若第一步把被覆盖0次的主要边切断,第二步可任意切断一条附加边。

  • 树上差分2021-09-07 01:31:54

    [模板题]https://www.luogu.com.cn/problem/P3128 在(u,v)最短路径上每个点加上v,询问最后权值最大的点 const int N = 5e4 + 50,M = 1e5 +50; int h[N],e[M],ne[M],idx; void add(int a,int b) { e[idx]=b,ne[idx]=h[a],h[a]=idx++; } int n,m,root; int dep[N],f[N][31];//i结

  • [HAOI2015] 树上染色2021-08-25 10:01:32

    [HAOI2015] 树上染色 树形 \(DP\) , 一道有点恶心的树上背包. 设状态 \(f[x][i]\) 表示以 \(x\) 为根节点的子树中选 \(i\) 个节点染黑的最大价值. 考虑转移, 枚举以 \(x\) 为根节点的子树中选 \(j\) 个黑点, \(x\) 的子节点 \(y\) 选 \(k\) 个黑点, 那么 \(dis(i, j)\) 就被计算

  • 树上问题--斯坦纳树2021-08-23 03:00:27

    前言: 什么是斯坦纳树问题?就是给你一些点,一些边,这些点中有一些特殊点,求满足所有特殊点联通的情况下,所费价值的最小值,这里的价值可以是边权,也可以是点权。那么怎么求?注意这种方法仅当特殊点的数量较小,因为我们要用状压去dp。 给一道模板题:     设dp[i][j]为以i为根,连通图中,联通了

  • 树上问题基础模板2021-08-21 20:31:20

    LCA板子: void init() { for(int i=1;i<=n;i++) ejz[i]=ejz[i-1]+(1<<ejz[i-1]==i); } void get_fa(int root,int fa) { f[root][0]=fa; dep[root]=dep[fa]+1; for(int i=1;i<=ejz[dep[root]];i++) { f[root][i]=f[f[root][i-1]][i-1];

  • CF1559 D2. Mocha and Diana (Hard Version)2021-08-18 12:31:51

    这场区分度比较低完全就是手速场嘛...趁机上了波分。 感觉这场最有思维量的就是这道D2了(D1直接n2并查集水过去了) 从D1我们就有一种感觉,题目给我们的其实是两个森林,我们每次肯定是将森林中的两棵树连接在一起。 那么我们不妨设置1号节点所在的树为主树,让森林中其他树都尽可能连接

  • 2021/8/17随笔2021-08-17 15:01:43

    询问树上a到b,c到d的两条路径是否相交如果相交,记 x=lca(a,b),y=lca(c,d),则必有x在c~d路径上或y在a~b路径上若交点是树上最高的交点,并且不是lca,说明这条链向上还有在链上的父节点,两链都不是lca,并且是树上最高的交点,说明,这交点上连接着两条不同的父节点,树不可能有两个父节点,所以不可

  • 8.16 树上问题模拟赛总结2021-08-16 23:31:06

    感觉还可以吧... 开考看题,因为不按照难度顺序排序,每道题都思考了几分钟。感觉 T1 比较有思路,开始深入思考。大概在 9:00 左右的时候感觉自己想出来了正解,不过感觉可能不会太好写,就写了后三题的暴力分。其中 T4 实在是没看懂,打了个固输。转回来做 T1 的时候时间貌似并不是很多了,在考

  • 树上博弈2021-08-16 21:02:16

    树上博弈 前置知识 基础图论知识,SG定理 问题描述 设\(T\)为一个森林,其中有\(n\)颗有根树,且树根都在地面上。\(Alice、Bob\)每次选择某一棵树的一条边,删除这条边以及这条边所连接的地上部分,最后无法操作的人输掉博弈。 简化问题 引入“竹子”的概念,如果一棵树退化成链,那么我们称其

  • [模板] 基础树上动规2021-08-12 16:32:23

    树的直径 方法一 : 两次dfs 方法二 : 利用动规求解,以每个结点向下延伸的最长长度为状态,顺便记录下向下延伸的次长长度,则数的直径便为 d1 + d2。 void dfs(int x,int fa){ f[x] = 1; int mx = 0; for(int i=head[x];i;i=nxt[i]){ int y=ver[i]; if(y==fa) continue; d

  • 树上最长链2021-08-04 13:33:28

    树上最长链 给定一棵树,每条边有权值,计算一条最长链,时间复杂度为O(n) 设f[i]表示以i为根的子树的最长链,显然f[i]=max(f[i],f[j])其中j是i的子节点,但是这样就值考虑了不经过i的路径,也就是不包括i 要想考虑经过i的路径,就需要选择两个子节点(随便在图上画画就能知道) 把两个子节点

  • 树上问题2021-08-03 07:34:14

    树形DP:   DP巧妙之处在于状态设计,即将多个类似信息放在一起 考虑,这也是DP的最优子结构性质,而树形DP常以记录根 节点信息进行转移,因为通常以根节点子树为DP阶段,而仅 有根节点信息会阶段外信息造成影响。   例1:选课   传统树形背包,利用树的递归性质,即子树(子集合) 之间的独立性

  • 树上染色2021-07-31 21:00:44

    题面 树上染色 题解 这道题转移应该很容易。 直接枚举当前节点染黑的个数以及子节点染黑的个数即可。 设 \(f[x][j]\) 表示以 \(x\) 为根节点的子树中染黑 \(j\) 个点时两种颜色两两距离的之和的最大值。 所以有状态转移方程: \[f[x][j] = min(f[x][j - p] + f[y][p] + val) \]其中

  • 树上DP模版题 重建道路2021-07-25 20:01:41

    树上DP 模版题重建道路 https://www.luogu.com.cn/problem/P1272 题意: 有n个点,n-1条边 , 求最少去掉多少条边会使使一颗含有P个点的子树和其他节点分离。 分析: 通过读题我们可以知道这个一颗树,含有根节点,无环,那么我们可以从上往下或从下往上的来思考。 我们可以维护一个二维数

  • LOJ #6208 树上询问2021-07-18 11:01:49

    记录一下第一个自己做出来的矩阵乘法数据结构题 传送门 大意是给你一个树,每个点维护两个权值k[i],t[i],初始为0 支持如下操作: 1、Add(x,d) 将x到根的路径上的点k[i]+=d 2、Mul(x,d) 将x到根的路径上的点t[i]+=d*k[i] 3、询问t[x] 首先非常显然的,使用树链剖分可以一个log的代价把原问

  • 【题解】P3698 [CQOI2017]小Q的棋盘2021-07-12 21:02:01

    【题解】P3698 [CQOI2017]小Q的棋盘 【题解】P3698 [CQOI2017]小Q的棋盘 题目大意 给定一棵无根树,求从根节点出发移动N步最多可经过多少节点,节点可重复经过,但不重复计数 Solution 既然是最优化问题,考虑树形DP 容易想到,设\(f[x][i][0/1]\)表示在x这棵子树上走\(i\)步,是否(\(0\)表示

  • 点分树学习笔记2021-07-12 20:32:26

    关于点分树的一些理解 定义与性质 点分树,就是把点分治中的每一次的重心连起来,构成一棵树。 由于重心的性质,点分治最多有 \(\lg n\) 层, 所以点分树的树高最多是 \(\lg n\) 维护 一般维护两个值 \(s1\) 和 \(s2\) ,\(s1\) 表示这个点的子树对于这个点的贡献, \(s2\) 表示这个点的子树

  • 基础树上问题2021-07-10 22:31:29

    五天没见过逆向题的 flag 了,甚是自闭,遂决定切换一下心情水点 acm 的小水题,顺带记录一下 LCA模板 发现博客里没有 LCA 模板,这不太好,放上板子方便 acv( 题目链接:P3379 【模板】最近公共祖先(LCA) 在线计算 LCA 一般使用倍增,也就是跳 1,2,4,8,16,321,2,4,8,16,32 …… 不过在这不是按从

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有