
圆方树
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【SDOI2018】战略游戏(圆方树)(虚树)(树上差分)
传送门题解:圆方树的性质不再赘述,两个圆点路径上的圆点就是原图中两点之间的必经点。那么我们要统计的就是询问的点构成的虚树上有多少个圆点。并不需要把虚树建出来,直接利用dfs序树上差分即可。跑得还挺快的。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs const...原创 2019-11-15 11:50:01 · 177 阅读 · 0 评论 -
2019.03.07【APIO2018】【洛谷P4630】【BZOJ5463】铁人两项(圆方树)(树形DP)
洛谷传送门BZOJ传送门解析:对所有点双建立圆方树,设圆点权值为−1-1−1,方点权值为点双大小。那么原题转化为求树上所有圆点两两路径的权值和,直接上树形DP。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc get_cha...原创 2019-03-08 21:53:16 · 184 阅读 · 0 评论 -
2019.04.01【BZOJ2125】【洛谷P5326】【模板】静态仙人掌(圆方树)
BZOJ传送门洛谷传送门补档计划无题解代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs int Rlen=1&l...原创 2019-04-01 19:53:17 · 258 阅读 · 1 评论 -
2019.04.01【校内模拟】Cac(圆方树)(DFS序)
传送门解析:仙人掌上路径问题考虑转换为圆方树上的问题。将所有点双和割边改造为方点会让这道题好写一点。现在考虑一条圆方树上的路径。考虑对所有方点维护加法标记,表示它的所有亲儿子的权值需要加上多少。加法标记对圆点无效。显然当路径LCA是方点的时候我们需要特殊处理一个圆点,拿一个桶来记录单独加了多少,每次修改只会有O(1)O(1)O(1)次这种操作,不会影响复杂度。对于询问我们在桶里面...原创 2019-04-01 21:37:19 · 250 阅读 · 0 评论 -
2019.04.02【CodeForces487】E. Tourists(圆方树)(树链剖分)(线段树)
传送门解析:我们发现题目中简单路径这个条件其实就是将点双缩点后,重构树上路径经过的所有点双里面的点。于是构建广义圆方树。这道题还是为了方便处理,将所有割边改造为方点。按照套路,所有方点维护亲儿子的信息,直接开一个multiset就行了。显然我们需要询问路径上最小值,上树剖和线段树维护,然后在询问的时候特判路径LCA为方点的情况。代码有点长,但是没什么细节,很好写。代码:#inc...原创 2019-04-02 09:57:00 · 207 阅读 · 0 评论 -
2019.04.02【洛谷P4320】道路相遇(圆方树)
传送门解析:换根支配树?不要想了,你要是明白支配怎么建的你就知道这玩意不存在的显然在无向图上除了起点终点以外的必经点就是割点。显然我们就是询问路径上割点个数。建立广义圆方树,显然路径上的所有圆点就是割点。相当于询问圆方树路径上圆点个数。这个嘛。。。怎么开心怎么玩是吧。代码:#include<bits/stdc++.h>#define ll long long#...原创 2019-04-02 10:47:40 · 197 阅读 · 0 评论