随笔分类 -  数据结构--树链剖分

摘要:题:https://ac.nowcoder.com/acm/contest/4370/F 题意:维护x3 支持区间加,区间覆盖,区间乘 分析: 码量题,其中区间覆盖可换成区间乘0+区间加w, lazy乘(设为y)对lazy加(设为w)有这样的影响:(x+w)*y,所以处理lazy乘时要对lazy加 阅读全文
posted @ 2020-12-05 21:39 starve_to_death 阅读(78) 评论(0) 推荐(0)
摘要:题:https://codeforces.com/contest/1437/problem/G 题意:首先给定n个模式串,每个模式串一开始价值为0,支持q个查询: [1, x, val ]:将x位置的模式串价值改为val; [2, s ] :找出在主串s中能匹配的模式串的最大值 分析: 将建立n个模 阅读全文
posted @ 2020-10-29 22:29 starve_to_death 阅读(186) 评论(0) 推荐(0)
摘要:题:https://ac.nowcoder.com/acm/contest/7831/H 题意:给定n个点的树,每个节点都有颜色; 询问[Q,y]:求把所有y颜色的节点联通起来用的最少的边数。 更新[U,x,y]:将x节点的颜色改为y; 分析: 对于询问,我们可以假象为有俩个点作为总边,剩余颜色的点 阅读全文
posted @ 2020-10-04 17:54 starve_to_death 阅读(192) 评论(0) 推荐(0)
摘要:题:https://ac.nowcoder.com/acm/problem/200191 题意:给定一棵树,操作一:把u变为x,操作二统计u~v的最短路径中的各子路径的节点的异或和的异或和。1<=n,q<=1e5 分析:考虑一个节点要么被异或到,要么不被异或到,只与被路径选中次数的奇偶有关。 假设节 阅读全文
posted @ 2020-09-08 20:58 starve_to_death 阅读(249) 评论(0) 推荐(0)
摘要:题:https://ac.nowcoder.com/acm/contest/5672/C 题意:给定树,m个操作:(1)在x点处增加w,树上每个点y的值+=w-dis(x,y)。 (2)将x点处值和0取min (3)查询x点的值 分析:将每个点x 的值展开=w-dep(x)-dep(y)+2*dep 阅读全文
posted @ 2020-08-02 14:53 starve_to_death 阅读(233) 评论(0) 推荐(0)
摘要:题:https://ac.nowcoder.com/acm/contest/4010/F 题意:给定一个树,有俩种操作,第一种节点v增加x个蘑菇;第二种根节点变为v。问每次操作完后,树上所有蘑菇走到根节点的代价。(每个蘑菇的代价为蘑菇与根节点连边最近的一条)。 分析:对于每个操作后的根节点,我们可以 阅读全文
posted @ 2020-06-15 09:41 starve_to_death 阅读(207) 评论(0) 推荐(0)
摘要:题:https://ac.nowcoder.com/acm/contest/5555/E 分析:树上路径,带修改,考虑树链剖分,对于操作1,把u的值改为x,影响的权值只是,u的父亲以及他孩子之间的边,那么我们就把重链的部分修改,其他的边不修改,即对u--son[u]和u--fa[u]的边的gcd修改 阅读全文
posted @ 2020-05-19 22:00 starve_to_death 阅读(224) 评论(0) 推荐(0)
摘要:这是对点权计算的板子 #include<bits/stdc++.h> using namespace std; #define lson root<<1,l,midd #define rson root<<1|1,midd+1,r #define pb push_back typedef long 阅读全文
posted @ 2019-11-13 12:49 starve_to_death 阅读(200) 评论(0) 推荐(0)
摘要:1 const int N = 1e5 + 5; 2 vector<int> g[N]; 3 int fa[N], dp[N], sz[N], son[N], top[N], dfn[N], to[N], cnt = 0, n; 4 void dfs1(int u, int o) { 5 fa[u] 阅读全文
posted @ 2019-05-09 18:18 starve_to_death 阅读(146) 评论(0) 推荐(0)
摘要:题:https://nanti.jisuanke.com/t/38229 题意:给定n个点m个询问。每个询问[x,,y,w]问x到y的路径上边权小于等于w的边数 离线处理,运用树链剖分让LCA跑快点 关键是把n-1条边,和m条询问边存起来 然后按边权值W进行升序; 这样在计数询问的时候我们从小到大计 阅读全文
posted @ 2019-04-21 23:36 starve_to_death 阅读(247) 评论(0) 推荐(0)