随笔分类 - 树刨
摘要:这里找到相应的分类的博客(DIY完了博客,但设置分类不会啊。逃~)
阅读全文
摘要:题意:一棵树,每个点有颜色,4种操作,1.单点修改权值 2.单点修改颜色 3.查询路径颜色相同的点权和 4.查询路径颜色相同的点权最大值。 思路:树刨+线段树动态开点,开1e5个线段树。 代码: #include <bits/stdc++.h> using namespace std; #defin
阅读全文
摘要:题意: 一颗树n个点有点权,m次操作。 操作两种: 换根 查询 x点的子树选每一个点,y点的子树选每一个点,如果两点点权相同ans++,输出ans n1e5,m5e5 换根是幌子,先按照1来树刨,这个跟bzoj3083结论一样,就是分三种情况: 当前根节点与被查询的点一样,那么这个点的子树区间直接是
阅读全文
摘要:题意:在树上操作,每次将两点路径值全变负和单点修改。每次求两点间路径的最大值。 思路: 边权转点权的话,每次把一条边的儿子点作为该边的权值。想起来挺好想,很容易出问题。 查询修改的话,要将多算的那条lca去掉就可以了。剩下的就是板子。 总结: 去掉lca,只需要判断top[x]==top[y]时,x
阅读全文
摘要:题意:对树上两点区间增加或减少每点的权值,单点查询每点的权值。 思路:一开始线段树写的,但是我的被卡了2*maxn的空间,优化一下就可以了,但是嫌太麻烦,出题人可能就打算卡部分人的线段树。 用bit的话,类似预处理数组,每次查询0-x点的区间和就可以,修改左端点和右端点的权值为v和-v即可。 代码:
阅读全文
摘要:题意:区间修改树上两点间的颜色种类,区间查询树上两点间的线段数。 思路:树刨+线段树,区间合并是第一次写。思路为线段树维护左端点和右端点的颜色,合并时相同就–。具体实现不太好写。 代码: #include <bits/stdc++.h> using namespace std; #define ll
阅读全文

浙公网安备 33010602011771号