ICode9

精准搜索请尝试: 精确搜索
  • 1293E. Xenon's Attack on the Gangs (树形DP)2020-02-29 18:02:18

    题目:传送门  思路:边权是任意填的。 包含0边(边权为0)的树链的mes值至少为1。换言之,0边为这些树链增加了1点的贡献,而1边(边权为1)必须与0边在一条链才能增加贡献,2边必须与1、0边在一条链才能增加贡献。而3、1、0构成一条链的mes为2,与 0、1构成一条链的mes相同,可见 在下图3边 是对答

  • 树链剖分板题入门:P3384重链剖分2020-01-29 14:36:46

    题目连接:重链剖分 思路: 把树剖剖分出来,然后就线段树上修改,注意每次先修改当前节点所在链的头的深度大的,然后让它为链的头的父亲即可,直道两个点,成为一条链上即可 老子搞了你这么多天,滚吧毒瘤题,hhh AC代码: #include<bits/stdc++.h> using namespace std; //树链剖分 #defi

  • 树链剖分2020-01-22 23:55:42

    转载请标明出处,以下部分内容主要转自Ivanovcraft巨佬的博客,加上了一些自己的见解和自己的代码。 对于修改树上的点权值,我们可以想到用树上差分来做。 对于求两点之间路径上的点的权值和,我们可以利用倍增的思想很好的解决这个问题。 可是,当修改与查询结合起来,就不能把这两种方法简

  • 【LuoguP4719】动态DP模板-树链剖分+线段树+矩阵乘法2020-01-22 12:39:05

    测试地址:动态DP 做法: 本题需要用到树链剖分+线段树+矩阵乘法维护动态DP。 动态DP这个东西以前听过,但当时没有看懂,现在想来觉得是卡在矩阵乘法这个地方。这里用的不是传统的矩阵乘法。 一般的DP我们肯定会做,序列上的线性动态DP(可以用线性递推式递推的DP)很容易想到用线段树+矩

  • 树链剖分与倍增求LCA2019-11-04 22:00:12

    树链剖分与倍增求\(LCA\) 首先我要吐槽机房的辣基供电情况,我之前写了一上午,马上就要完成的时候突然停电,然后\(GG\)成了送链剖分 其次,我没歧视\(tarjan LCA\) 1.倍增求\(LCA\) 理解较为简单的一种方法,但速度略慢 倍增是啥? 每个数字都可以拆成几个二的整数次的和,我们可以找出每个数

  • [总结]树链剖分的详细介绍2019-11-04 16:57:48

    目录 一、关于树链剖分 二、树链剖分实现流程 二、树链剖分具体实现 1.需要表示的变量 2.储存一棵树 3.第一次遍历,处理fa,dep,size,son数组 4.第二次遍历,处理top,seg,rev数组 5.初始化线段树 6.单点修改 7.区间修改---以x为根结点的子树内节点的值都加val 8.区间修改---节点x到节点y

  • 树链剖分学习笔记2019-11-03 16:51:02

    树链剖分 概述:通过将一棵树上的点分为轻重链,来降低复杂度,此时lca查询复杂度为\(O(logn)\),支持在线。 前置 重儿子:一个有根树的一个点 子树最大的儿子 轻儿子:其它的儿子 重链:由重儿子连接成的链 轻链:其它的所有链 下图是一棵剖好的树 图片来自于[知识点]树链剖分 树剖 树剖本体其

  • 树链剖分2019-10-30 12:04:12

    我终于码了树链剖分,别人半年前学会的东西我终于入门辣!!! 先放全代码:   1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #define MAXN 30010 6 using namespace std; 7 const int INF=(1<<30); 8 struct rr{ 9 int nt,

  • 浅谈DFS序2019-10-29 12:53:34

    浅谈DFS序 本篇随笔简要讲解一下信息学奥林匹克竞赛中有关树的DFS序的相关内容。 DFS序的概念 先来上张图: 树的DFS序,简单来讲就是对树从根开始进行深搜,按搜到的时间顺序把所有节点打上时间戳。 就比如上面这棵树,它的一个DFS序就是: 1 2 8 8 5 5 2 7 7 4 3 9 9 3 6 6 4 1 注意两点:

  • [NOI2015]软件包管理器 —— 树链剖分2019-10-24 13:40:39

    题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu使用的apt-ge

  • bzoj2325 [ZJOI2011]道馆之战 树链剖分+DP+类线段树最大字段和2019-10-05 21:54:37

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2325 题解 可以参考线段树动态维护最大子段和的做法。 对于线段树上每个节点 \(o\),维护 \(ls_{0/1}, rs_{0/1}, s_{0/1, 0/1}\) 分别表示从最左边的上面/下面的格子进入最多走的方块数量,从最右边的上面/下面的格子进入最

  • 树链剖分 [模板]最近公共祖先LCA2019-10-05 12:04:15

      本人水平有限,题解不到为处,请多多谅解    本蒟蒻谢谢大家观看   题目:传送门 树链剖分:跑两遍dfs,第一遍找重边,第二遍找重链。 重儿子:父亲节点的所有儿子中子树结点数目最多(size最大)的结点; 轻儿子:父亲节点中除了重儿子以外的儿子; 重边:父亲结点和重儿子连成的边; 轻边:父亲节点和

  • [一本通学习笔记] 树链剖分2019-10-04 19:04:16

    loj上只挂了两个无重的题,本来心想水一下,结果被SDOI2011染色那题卡了一发。尽管这题之前做过,但实现很不优美。今天WA的第一发一开始测样例就挂了,强行调试半天交上去一分没有。后来仔细想了想怎样写比较清楚(尽管看起来好像有点冗余),写好以后一路顺风一发就过。从这里也有点感悟吧。 1

  • 「CSPS 2019」十一三地联考2019-10-01 20:53:03

    因为版权原因,不放题面。 幸福 Solution 只会写 \(70\) 分的找规律代码,可以考虑每个斐波那契数对卷积的贡献,发现贡献是类似于倒斐波那契数列,就可以 \(O(n)\) 做了,有 \(70\) 分。 std 是化简一下式子,化简结果为 \[F_n = F_{n-1} + F_{n-2} + f_n\] 发现这是一个递推式,用矩阵乘法加速

  • P3384 【模板】树链剖分2019-09-27 19:01:25

      大佬博客:https://www.cnblogs.com/chinhhh/p/7965433.html#firstt 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路

  • loj 2955 「NOIP2018」保卫王国 - 树链剖分 - 动态规划2019-09-22 14:02:40

    题目传送门   传送门   想抄一个短一点ddp板子。然后照着Jode抄,莫名其妙多了90行和1.3k。 Code /** * loj * Problem#2955 * Accepted * Time: 2653ms * Memory: 25616k */#include <bits/stdc++.h>using namespace std;typedef bool boolean;const int N = 1e5 + 5;#defi

  • [NOI2015] 软件包管理器【树链剖分+线段树区间覆盖】2019-09-05 19:03:00

    Online Judge:Luogu-P2146 Label:树链剖分,线段树区间覆盖 题目大意 \(n\)个软件包(编号0~n-1),他们之间的依赖关系用一棵含\(n-1\)条边的树来描述。一共两种操作: install x:表示安装软件包x uninstall x:表示卸载软件包x 安装\(x\)时,必须得先安装x到根节点路径上所有的软件包;而卸载\(

  • 树链割分原理和实现2019-09-02 15:44:08

    树链割分即将树分割成为一段一段的线段区间,具体分割的过程就是一个dfs的过程,然后就可以将树结构划分为数组结构,从而实现树上的区间操作,即用线段树或者树状数组处理。 首先就是一些必须知道的概念: 重结点:子树结点数目最多的结点; 轻节点:父亲节点中除了重结点以外的结点; 重边:父亲

  • P4281 [AHOI2008]紧急集合 / 聚会 树链剖分2019-08-28 17:03:22

       m个询问 每个询问有三个节点  求出  一个节点 使得这三个节点到该结点的距离之和最小  输出该节点和距离之和   一开始用线段树给三条边均加1   最大值的节点就是答案 但是T了   可以优化log 观察三个节点的lca可发现  如果三个lca都相同  那么就是该节点 如果两个相

  • BZOJ4381: [POI2015]Odwiedziny 分块+树链剖分2019-08-28 14:05:00

      题目描述 给定一棵n个点的树,树上每条边的长度都为1,第i个点的权值为a[i]。Byteasar想要走遍这整棵树,他会按照某个1到n的全排列b走n-1次,第i次他会从b[i]点走到b[i+1]点,并且这一次的步伐大小为c[i]。对于一次行走,假设起点为x,终点为y,步伐为k,那么Byteasar会从x开始,每步往前走k步

  • hdu5111 树链剖分,主席树2019-08-21 15:55:06

    hdu5111 链接 hdu hdu挂了,我也不知道这份代码对不对,反正过了对拍了 思路 先考虑序列上如何解决。 1 3 2 5 4 1 2 4 5 3 这个序列变成 1 2 3 4 5 1 3 5 5 2 是对答案没有影响的(显然)。 然后查询操作\(l,r,L,R\)就是, 一段连续的区间\([L,R]\)内包含几个值在\([l,r]\)的数字个数. 主

  • [AHOI2005]航线规划(树链剖分+时间倒流)2019-08-17 23:01:33

    传送门 练一下树剖的板子,运用一下时间倒流和下放边权的思想。 题中所谓“关键航线”其实就是桥。 删边操作桥不好维护,但如果是加边,每加一条边,两点作为端点的这条路径就都不再是桥----->考虑时间倒流。 从后往前,每删除一条边,现在就是加边,该路径上所有边都不是桥(打上标记)。 可以先求

  • 树链剖分(超详细!!!)2019-08-17 20:07:47

    一、轻重边剖分的过程 使用两次dfs来实现。剖分过程中要计算如下7个值: father[x]:x在树中的父亲 size[x]:x的子树结点数(子树大小) dep[x]:x在树中的深度 son[x]:x的重儿子,即为重边 top[x]:x所在重路径的顶部结点(深度最小) seg[x]:x在线段树中的位置(下标) rev[x]:线段树中第x个

  • CSUST 2012 一个顶俩 (本校OJ题)(思维+树链剖分)2019-08-16 22:53:47

    (点击这里查看原题,不保证可以进去....外网可能比较卡) Description A:一心一意 B:一个顶俩 最近QQ更新后那个成语接龙好像挺火的?但我只知道图论里一条边是一个顶俩个点的emm。 如果我给你一个n个点n-1条边的无向联通图,但是这里头有一些边是脆弱的。随时都面临崩坏的危险。 为了

  • LCA(使用树链剖分)2019-08-16 20:03:18

    最近刚好学了树链剖分,来一道LCA的模板题练练手:P3379 最近公共祖先(LCA) 题意:给一棵多叉树,m次询问,求两个节点之间的LCA。 思路:树链剖分。 #include <bits/stdc++.h> #include<cstring> #define L(x) (x<<1) #define R(x) (x<<1|1) #define fori(a,b,c) for(int a=b;a<=c;a++) #d

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

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

ICode9版权所有