随笔分类 -  树链剖分

摘要:F $dp$出前$i$个位置匹配了多少个$nunhehheh$,再统计每个位置后面$a$的个数即可计算答案 #include<bits/stdc++.h> #define inf 2139062143 #define ll long long #define db double #define ld 阅读全文
posted @ 2021-10-12 19:08 jack_yyc 阅读(64) 评论(0) 推荐(0)
摘要:这场好难 $dls$下手也太狠了 A 好奇怪的题 弃了 B 将每个点认为是边和列之间的边,容易发现题意即为求最小生成树 因为边权不会太大,桶排序后$kruskal$即可 #include<bits/stdc++.h> #define inf 2139062143 #define ll long lo 阅读全文
posted @ 2021-07-30 19:09 jack_yyc 阅读(47) 评论(0) 推荐(0)
摘要:A 签到题,对于一个正方体,有$8$种顶点均在正方体顶点上满足条件的正三角形 显然$Ans=\sum\limits_{i=1}{n-1}8i3=8(\frac{n(n-1)}{2})^2=2(n-1)n$ #include<bits/stdc++.h> #define inf 2139062143 阅读全文
posted @ 2021-07-30 19:02 jack_yyc 阅读(84) 评论(0) 推荐(1)
摘要:T1 题目大意: 一棵树有正边权,$Q$次询问,询问$x$与编号在$[l,r]$之间的点的最小距离 思路: 建立点分树,由于在每个分治重心内任意两个点的lca可以看做重心 我们可以预处理出一个点到他点分树上所有的祖先的距离,每个点最多处理$log$个距离 对每个重心维护动态开点线段树,把每个点暴力加 阅读全文
posted @ 2019-03-27 18:56 jack_yyc 阅读(173) 评论(0) 推荐(0)
摘要:T1 1e5只龙的故事 题目大意: 一棵树 q次询问 每次询问一条路径上的第$k$小的点的权值(不去重),然后把整个路径上所有点的权值都改成这个值 思路: 好暴力啊 使用树剖线段树暴力维护权值一样的区间 查询的时候开个数组记录所有满足条件的区间 排序后直接查即可 1 #include<iostrea 阅读全文
posted @ 2019-03-16 08:31 jack_yyc 阅读(186) 评论(0) 推荐(0)
摘要:T1 words 题目大意: bzoj 4567 题解链接 考试代码: (如果不重建树的话会出锅 例子: 其中加粗的边为有$end$标记的节点,若不重建树,则左边$a$的$sz$为4,右边为3会先走右边 实际上应该先走左边(man太惨了。 View Code T2 tree 题目大意:bzoj 48 阅读全文
posted @ 2019-03-14 09:14 jack_yyc 阅读(243) 评论(0) 推荐(0)
摘要:bzoj 2152 聪聪可可 题目大意: 求树上边权和为3的倍数的路径的条数 思路: 点分治练习题 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cmath> 5 #include<algorithm> 阅读全文
posted @ 2018-12-22 10:40 jack_yyc 阅读(270) 评论(0) 推荐(0)
摘要:T1 exploit 题目大意: 一棵树 每个点中有能量井,每个时刻,第$i$口井中回复$v_i$的能量;每口井有能量上限$l_i$ $Q$次询问 每次询问$t,x,k$表示在$t$时刻提取$x$的子树中与$x$距离不超过$k$的井的能量 并输出提取的能量之和 保证$t$递增 思路: 首先题目被分为 阅读全文
posted @ 2018-12-18 12:45 jack_yyc 阅读(315) 评论(0) 推荐(0)
摘要:T1 bzoj 4730 Alice和Bob又在玩游戏 题目大意: Alice和Bob在玩游戏 n个节点,m条边(0<=m<=n-1),构成若干棵有根树,每棵树的根节点是该连通块内编号最小的点 Alice和Bob轮流操作,每回合选择一个没有被删除的节点x,将x及其所有祖先全部删除,不能操作的人输 思 阅读全文
posted @ 2018-12-03 16:50 jack_yyc 阅读(198) 评论(0) 推荐(0)
摘要:题目大意: 给定一棵n个节点的树,初始时该树的根为1号节点,每个节点有一个给定的权值。下面依次进行m个操作,操作分为如下五种类型: 换根:将一个指定的节点设置为树的新根 修改路径权值:给定两个节点,将这两个节点间路径上的所有节点权值(含这两个节点)增加一个给定的值 修改子树权值:给定一个节点,将以该 阅读全文
posted @ 2018-10-20 17:29 jack_yyc 阅读(351) 评论(0) 推荐(0)
摘要:题目大意: 一个无向图 每个点有权值 支持两个操作 1 修改某个点的权值 2 查询a-b所有简单路径的点上的最小值 思路: 可以把图变成圆方树 然后树链剖分 维护 对于每个方点使用可删堆维护 1 #include<iostream> 2 #include<cstdio> 3 #include<cma 阅读全文
posted @ 2018-09-27 21:00 jack_yyc 阅读(239) 评论(0) 推荐(0)
摘要:题目大意: 一棵树,每个点有颜色 支持四种操作: 单点改颜色/权值 查询两点间路径上与起点或终点的颜色一样的点的权值和/最大值 思路: 动态开点 树链剖分 重点在动态开点 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 阅读全文
posted @ 2018-08-31 18:20 jack_yyc 阅读(149) 评论(0) 推荐(0)
摘要:T1 HOTEL 题目大意: 在树上选出三个点使这三个两两之间距离相等 求选出这三个点的方案 思路: 树形dp 枚举每一个树根 选三个和选两个差不多 多开一个dp数组 1 #include<iostream> 2 #include<cmath> 3 #include<algorithm> 4 #in 阅读全文
posted @ 2018-08-13 15:29 jack_yyc 阅读(184) 评论(0) 推荐(0)
摘要:bjoi 2018 求和 唯一一道可能切的题一个数组还没开long long就成0分了 题目大意: 一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k次方和,而且每次的k可能是不同的 此处节点深度的定义是这个节点到根的路径上的边数 思路: 考试的时候随便写了个树剖 剖下来之后搞五十个次方 阅读全文
posted @ 2018-04-16 16:41 jack_yyc 阅读(155) 评论(0) 推荐(0)
摘要:题目大意: 给一颗树,每个节点有个初始值 现在支持以下两种操作: 1. C i x 表示将i节点的值改为x 2. Q i j x 表示询问i节点到j节点的路径上有多少个值为x的节点 思路: 首先可以想到树链剖分 虽然颜色的数量看起来很吓人 但是实际上只可能有n+q种颜色 所以我们的线段树只需要像主席 阅读全文
posted @ 2018-02-25 10:45 jack_yyc 阅读(150) 评论(0) 推荐(0)
摘要:题目大意: 给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先 有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LCA(i,z)] (即,求在[l,r] 阅读全文
posted @ 2018-01-26 14:04 jack_yyc 阅读(143) 评论(0) 推荐(0)
摘要:题目大意: 给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段) 如“112221”由3段组成:“11”、“222”和“1” 请你写一个程序依次完成这m个操作 思路: 直接树剖 但是需 阅读全文
posted @ 2018-01-03 17:26 jack_yyc 阅读(156) 评论(0) 推荐(0)
摘要:题目大意: 一棵树,开始所有点权值为0 支持两种操作: ① 将它到根路径上所有点(包括自己与根)的权值都变为1 求点权被改变的点的个数 ② 将它的子树内所有点以及自己的权值变为1 求点权被改变的点的个数 思路: 看懂了题之后就很裸了 然后我因为pushdown的tag向下传递少打了右子树的“|1”调 阅读全文
posted @ 2017-12-14 20:20 jack_yyc 阅读(138) 评论(0) 推荐(0)
摘要:题目大意: 一个树 支持以下五种操作 C i w,表示对于经过第i条边的权值变成了w N u v,表示u 到v 的路径上的所有边的权值都变成原来的相反数。 SUM u v,表示询问从u 到v 所获得的边权和 MAX u v,表示询问从u 到v 的路径上的边权最大值 MIN u v,表示询问从u 到v 阅读全文
posted @ 2017-12-05 17:39 jack_yyc 阅读(135) 评论(0) 推荐(0)
摘要:题目大意: 一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 操作3: 格式: 3 x z 表示将以x为根 阅读全文
posted @ 2017-12-02 20:48 jack_yyc 阅读(289) 评论(0) 推荐(0)