ICode9

精准搜索请尝试: 精确搜索
  • bzoj3589 动态树 树链剖分+容斥2019-10-06 19:53:14

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3589 题解 事件 \(0\) 不需要说,直接做就可以了。 事件 \(1\) 的话,考虑如果直接查询然后相加的话,会有很多段被算重了。于是考虑容斥,把算重的段给减掉就可以了。至于如何计算每一段的答案,直接树剖吧。 时间复杂度 \(O(^5

  • 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结点最短路

  • 长链剖分学习笔记2019-09-24 20:50:24

    终于认真写一次标题了 因为一些不明原因,之前对\(dsu\) \(on\) \(tree\)的理解没有完全写出来,在这里会一起写,因为两者极为相似。 先来看一下\(dsu\) \(on\) \(tree\)和长链剖分的对比。 \(dsu\) \(on\) \(tree\)实际上就是重链剖分,可以处理很多与子树有关且不带修改的题目(离线),复杂

  • 【HDU5566】Clarke and room(AC自动机)(树链剖分)(线段树)2019-09-23 19:04:57

    传送门 题解: 在线也好离线也好,反正AC自动机只建在有询问的线段树节点上就行了。 由于树链剖分形态的特殊性,可能很多线段树节点上都没有询问(是两条链标号的并),建出来就是浪费时间。 代码: #include<bits/stdc++.h> #define ll long long #define re register #define gc get

  • 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

  • 【墨西哥区域赛】Carpet2019-09-21 21:02:48

    原题: 题意: 给你一个树,有1e5个节点,让你把这个树放在一个长1e6宽20的网格图里,要求一个格子放一个节点,树边之间不能相交   这是一道构造题 因为树的形状可能性很多,很复杂,所以不能简单猜测,而必须要依据某种性质,来保证生成的解一定合法 先尝试小规模,或特殊的问题也是一个重要的思想方

  • 树链剖分模板 洛谷P33842019-09-12 19:05:40

    #include <cstdio> const int maxn = 200000+10; struct edge{ int v, next; }e[maxn << 1]; //N、M、R、mod,分别表示树的结点个数、操作个数、根节点序号和取模数 int n, m ,r , mod, len = 1, cnt, code , x, y, z; //cnt是重新进行编号的 编号 int w[maxn]; //保存

  • [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到根节点路径上所有的软件包;而卸载\(

  • Last mile of the way [树形dp+重链剖分]2019-08-30 15:07:07

    Last mile of the wayLast\ mile\ of\ the\ wayLast mile of the way 最初想法\color{blue}{最初想法}最初想法 没看见 s≤5000s \le 5000s≤5000, 以为是 s≤50002s \le 5000^2s≤50002, 开不下 dpdpdp 数组, 事后发现自己zz了 . 正解部分\color{red}{正解部分

  • Count on a tree SPOJ 主席树+LCA(树链剖分实现)(两种存图方式)2019-08-29 22:50:53

    Count on a tree SPOJ 主席树+LCA(树链剖分实现)(两种存图方式) 题外话,这是我第40篇随笔,纪念一下。<( ̄︶ ̄)↗[GO!] 题意 是说有棵树,每个节点上都有一个值,然后让你求从一个节点到另一个节点的最短路上第k小的值是多少。 解题思路 看到这个题一想以为是树链剖分+主席树,后来写着写着发现

  • 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步

  • hdu 3966 树链剖分 点操作2019-08-27 20:36:45

      /*by SilverN*/ #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<cmath> #define LL long long using namespace std; const int mxn=100010; int read() { int x=0,f=1; char ch=getchar(); while

  • BZOJ 4543/3522: [POI2014]Hotel 树形Dp+长链剖分2019-08-25 22:02:32

    title BZOJ 3522 LUOGU 3565 加强版:BZOJ 4543 简化题意: 有一个树形结构,每条边的长度相同,任意两个节点可以相互到达。 选 3 个点,两两距离相等,有多少种方案? \(n\leqslant 5000\) 加强版:\(n\leqslant 1e5\) analysis 明显树形 \(Dp\),且显然,对于三个点任意两个点的中点一定是重合的,

  • 2019年ICPC南昌网络赛 J. Distance on the tree 树链剖分+主席树2019-08-22 22:57:41

      边权转点权,每次遍历到下一个点,把走个这条边的权值加入主席树中即可。     #include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>using namespace std;const int maxx = 2e5+10;struct node{ int l,r,cnt;}tree[maxx*40];int head[maxx],rk[maxx],siz

  • 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

  • [动态dp][矩阵乘法][树链剖分][线段树] Luogu P4719 【模板】动态dp2019-08-16 17:01:28

         题解 动态dp模板题,矩阵乘法有所不同C=A*B=max(a[i][j]+b[j][k])   代码 1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 const int N=1e5+1,inf=999999999; 5 struct matrix 6 { 7 int a[3][3]; 8 void init() { for (int i=0;i<2;i+

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

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

ICode9版权所有