动态树
文章平均质量分 81
thy_asdf
我也不知道说什么...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj 2049 洞穴勘测
#include#include#includeusing namespace std;const int maxn=10010;int n,m;char s[10];struct node{ int c[maxn][2],f[maxn],rev[maxn]; bool isroot(int x){return (c[f[x]][0]!=x)&&(c[f[x]][1])!=x;}原创 2015-06-22 17:36:24 · 554 阅读 · 0 评论 -
bzoj3779: 重组病毒
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3779思路:RELEASE操作怎么给人一种access的感觉呢?“如果新变种在感染过程中尚未销毁过这类旧变种,需要先花费1单位时间分析旧变种,才能销毁”这不就是到根统计虚边条数+1吗继续看下去RECENTER好像就是换根,换完了正好要access一下REQUEST询问子原创 2016-02-28 17:36:28 · 1438 阅读 · 0 评论 -
bzoj3159: 决战
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3159思路:题解与标程在此:http://tieba.baidu.com/p/2307619154首先链翻转显然不能直接在lct上打翻转标记,那样是在翻转链的深度,不是翻转链上的值于是就有了一种做法,写两个splay,一个维护权值,一个维护形态每棵形态splay和对应值spla原创 2016-02-28 10:30:31 · 1040 阅读 · 0 评论 -
bzoj3514: Codechef MARCH14 GERALD07加强版
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3514思路:这题思路很巧妙首先每个连通块只要保留一棵生成树的边就可以保证连通了把每条边的编号当做边权我们把每条边按顺序加入,维护一个每个连通块的最大生成树每次替换树上路径的最小边把它替换的边的编号记录到一个数组a[i]中,如果连通了两个连通块,a[i]=0原创 2016-01-14 16:40:41 · 1308 阅读 · 0 评论 -
【Qtree】Query on a tree系列LCT解法
Qtree1-7 待填坑原创 2016-02-29 21:48:40 · 2939 阅读 · 0 评论 -
bzoj3510: 首都
题面:在X星球上有N个国家,每个国家占据着X星球的一座城市。由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的。 X星球上战乱频发,如果A国打败了B国,那么B国将永远从这个星球消失,而B国的国土也将归A国管辖。A国国王为了加强统治,会在A国和B国之间修建一条公路,即选择原A国的某个城市和B国某个城市,修建一条连接这两座城市的公路。 同样为了便于统治自己的国家,国家的首都会选在原创 2015-06-25 10:16:39 · 979 阅读 · 0 评论 -
bzoj3651&3081: 网络通信
3651: 网络通信Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 50 Solved: 37[Submit][Status][Discuss]Description 有一个由M 条电缆连接的 N 个站点组成的网络。为了防止垄断,由 C 个公司控制所有的电缆,规定任何公司不能控制连接同一个站点的两条以上的电缆(可以控制两原创 2015-06-22 21:47:05 · 468 阅读 · 0 评论 -
bzoj2631: tree
话说bzoj上叫tree的题可真多...题目大意:路径加,路径乘,路径求和,加边删边。思路:动态树搞搞就行了,两个标记要注意。#include#include#include#define ll unsigned int#define ls c[x][0]#define rs c[x][1]const int mod=51061,maxn=100010; using na原创 2015-06-22 21:34:44 · 465 阅读 · 0 评论 -
bzoj3282: Tree
#include#include#include#define ls c[x][0]#define rs c[x][1]using namespace std;const int maxn=300010;int n,m; struct LCT{ int c[maxn][2],fa[maxn],rev[maxn],sum[maxn],val[maxn]; bool原创 2015-06-22 21:39:24 · 489 阅读 · 0 评论 -
bzoj2594: [Wc2006]水管局长数据加强版
题目大意:给定一个简单图,支持删边,每次询问两点间 最大边权值最小的路径。思路:首先每次询问两点间 最大边权值最小的路径一定是在最小生成树上。具体证明可以自行百度或YY。然后我们就可以去维护最小生成树了,但是题目是删边,没法做啊....这时我们可以倒着做,离线处理,删边就成了加边。怎么用LCT维护呢?先跑一遍kruskal,因为题目保证任意时刻图是联通的,所以一定可以跑出一棵初始的最小生成树(原创 2015-06-22 20:44:58 · 1380 阅读 · 0 评论 -
bzoj1180: [CROATIAN2009]OTOCI
题目大意:询问两点是否连通(反人类的是连通输no,不联通输yes...),单点权值修改,路径和。思路:正常的动态树,搞搞就行了。#include#include#includeconst int maxn=30010;using namespace std;int n,m;char op[15];struct LCT{ int sum[maxn],fa[maxn],c[maxn]原创 2015-06-22 20:07:23 · 563 阅读 · 0 评论 -
bzoj2002:[Hnoi2010]Bounce 弹飞绵羊
思路:动态树。把每个装置看成点,能弹到的装置连边,能弹飞的装置连到n+1号点,每个点点权设为1,这样问几次弹飞就可以转化为该点到n+1号点的路径的点权和。#include#include#include#includeconst int maxn=200010;using namespace std;int n,m,next[maxn];char ch;void read(in原创 2015-06-22 19:58:51 · 844 阅读 · 0 评论 -
bzoj1036树的统计Count
单点修改,询问链最大,链和,LCT和树链剖分都可以写,不过LCT就是慢....LCT:#include#include#includeusing namespace std;const int maxn=30010;int n,m,u[maxn],v[maxn];char s[7];struct LCT{ int val[maxn],fa[maxn],c[maxn][2],原创 2015-06-22 19:47:58 · 614 阅读 · 0 评论 -
bzoj2243: [SDOI2011]染色
2243: [SDOI2011]染色Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 3271 Solved: 1262[Submit][Status][Discuss]Description给定一棵有n个节点的无根树和m个操作,操作有2类:1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点原创 2015-06-22 20:22:14 · 1418 阅读 · 0 评论 -
bzoj2819: Nim
题意:树上的NIM游戏,每次取出一条链,问先手是否有必胜策略。思路:动态树or树链剖分维护链异或和,为0则没有,否则有。LCT死活就是TLE,代码就不贴了。原创 2015-06-22 20:12:57 · 500 阅读 · 0 评论
分享