
树
CHCXCHC
这个作者很懒,什么都没留下…
展开
-
hdu 5420 Victor and Proposition 线段树建图+强连通分量
题意: http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=620&pid=1003题目求有多少对互为充要条件,很容易看出是直接求强连通分量然后分量再计算就可得出。。但是没想到怎么建图,如果暴力直接建图复杂度达到O(n2)O(n^2)这样会TLE的。看了题解后觉得服气了。。对于每个节点记录其子树深度为i的节点原创 2015-08-23 21:11:53 · 1455 阅读 · 0 评论 -
spoj1825 Free tour II 点分治
给一颗带权树,这颗树上每个点有一个点色 黑色或白色 现在要求经过不超过K个点的最长路径长度是多少将无根树转换为有根树,每次只考虑一个点,计算经过该点不超过K个点的最长路径长度。考虑完该点之后把该点删掉。然后从子树中再找一点。一直这样下去。每次找重心。最多有log2nlog_2 n层,然后每层跑个O(nlog2n)O(nlog_2 n)是可以接受的 要考虑到怎么计算经过该点不超过K个点的最长路径长度原创 2015-10-12 18:45:27 · 660 阅读 · 0 评论 -
HDU 5458 Stability 树链剖分
题意:给n个点m条边的无向图,图中可能包含自环和重边,现在有两种操作: 1.删掉一条(a,b)边 2.询问a->b上有多少条关键边,关键边意思为:删掉该边,使得a不能到达b。 所有删除操作都保证图是连通的。把删除操作倒着加边来搞。 先随便建一颗树,边权为1,若加边(a,b),那么a到b的路径上的边权都赋值为0 询问a b则为a->b的边权和。用树链来搞。//author: CHC//Fi原创 2015-09-22 15:46:01 · 790 阅读 · 0 评论 -
POJ 1741 Tree 树 点分治
题意:给定一颗n(n<=10000)个点的带权树,问这颗树中两点最短路小于等于K的点对有多少。漆子超 的《分治算法在树的路径问题中的应用》中的例题之一。因为是无根树,每次找树的重心,以重心转换为有根树,可以防止算法从O(NlogN)O(NlogN)退化为O(n2)O(n^2),,然后求经过该点的最短路小于等于K的点对数。但是会算多,因此要减去算多的那些部分。。 代码:#include <iostr原创 2015-10-05 12:10:29 · 607 阅读 · 0 评论 -
Uvalive 6259 Word equations dfs+dp
题意:给定一些宏以及宏的定义,问指定宏展开后是否是某个字符串的匹配串。 比如 START = FIRST + SECND • FIRST = D + E • SECND = F + E • D = good • E = times • F = bad START的展开为goodtimesbadtimesgoodtimesbadtimes,给定一个询问。debatedebate,这个串原创 2015-10-04 20:49:33 · 640 阅读 · 0 评论 -
hdu 5416 CRB and Tree 求树上路径异或结果为s的有多少
题意:给一颗树,定义f(u,v)为u到v路径上的异或结果,现在给定s,要求异或结果为s的路径有多少条。(1,2)和(2,1)只算一种。根据异或的特性有f(u,v)=f(1,u)^f(1,v),先把f(1,i)的所有i都求出,然后对于每一个u(1~n)如果有f(u,v)=s的话那么有f(1,v)=s^f(1,u),所以求一下f(1,v)有多少个,加起来就行了,最后要特殊讨论下s==0的情况。//aut原创 2015-08-22 18:43:58 · 1078 阅读 · 0 评论 -
Codeforces Round #316 D. Tree Requests 树剥分
题意: 给一颗包含n个节点的树。每个节点上都有一个小写字母。现在给节点v和深度h,求节点v子树的深度为h的点上的字符能否组成回文。 链接:http://codeforces.com/contest/570/problem/D我的做法:对所有点都重编号,使得同一层的点都是连续的(按层次重编号),然后记录每一层的26个字母出现的次数,对于每个查询u,h,找u下深度为h的左右端点,明显可知道如果字母出原创 2015-08-16 22:22:30 · 691 阅读 · 0 评论 -
zoj 3820 求三遍树的中心
题意:给一颗节点数>=2的树,在树上标记两个点,使得所有点到离它最近的点的最大距离最小。这题需要了解树的直径以及树的中心这两个概念 树的中心是树上所有点到这个点的最大距离最小 树的直径是树的最长链 我的做法是,先找到树的中心,如果中心有两个(树的中心一定不会大于2个),就劈成两个子树,求两个子树的中心 如果树的中心有一个,就劈开直径上一条边,拆成两颗子树,求这两棵子树的中心。 代码复用性比原创 2015-08-16 18:42:25 · 5053 阅读 · 0 评论 -
hdu 5423 Rikka with Tree 乱搞
题意:众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习,其中有一道是这样的: 对于一棵树TT,令F(T,i)F(T,i)为点1到点ii的最短距离(边长是1). 两棵树AA和BB是相似的当且仅当他们顶点数相同且对于任意的ii都有F(A,i)=F(B,i)F(A,i)=F(B,i). 两棵树AA和BB是不同的当且仅当他们定点数不同或者存在一个ii使得以1号点为根的时候原创 2015-08-30 21:43:19 · 590 阅读 · 0 评论 -
hihoCoder挑战赛14 题目2:赛车 LCA
题意:幻想乡有一个赛车场。赛车场里有N个地点。同时地点之间还有单向的道路存在。 这些道路使得赛车场形成了一个外向树的结构。也就是说,道路将这N个地点连成了一个有根树。并且所有的边都是从父亲指向孩子的。 由于幽香喜欢刺激,每次她去赛车场都会从根节点出发,选择最长的一条路径来玩。 但是现在幽香感觉最长的路径还是太短了,她打算在赛车场里新建一条道路使得新的最长路径最长。 同时,如果原创 2015-08-30 21:49:16 · 660 阅读 · 0 评论 -
hdu 5379 Mahjong tree dfs
题意:在一棵树上给所有点标号,要求任意一个子树里的点编号连续,每一个点的儿子编号连续。分析:考虑到一个连续的序列[l,r],如果这颗子树有超过3个非叶子儿子,那么一定是无解的。因为对于一个连续序列[l,r]最多可以分配给两个非叶子节点。分别是l和r,[l+1,r-1]这些可以随意分配给叶子节点。 考虑到这一点其实问题就可以简化了 对于每一个节点。 如果确定[l,r]是分配到以这个节点为根的子树原创 2015-08-12 10:39:42 · 719 阅读 · 0 评论 -
【算法】Treap模板和SBT模板
SBT:http://blog.youkuaiyun.com/acceptedxukai/article/details/6921334 Treap:来源忘了。 有个可以优化的地方,就是将相同值合并为同一点,以后改了再放上来。 Treap版本1://author: CHC//First Edit Time: 2015-08-20 12:15#pragma comment(linke原创 2015-08-22 15:13:46 · 1980 阅读 · 0 评论 -
hdu 5412 CRB and Queries 求动态区间第k小 树套树
题意: 给n个数,然后有两个操作 1.把第i个点的值修改为v 2.求[l,r]区间内第k小的数树状数组+平衡树。 我写了两份代码:树状数组+SBT和树状数组+Treap 代码://author: CHC//First Edit Time: 2015-08-20 14:10#pragma comment(linker, "/STACK:102400000,102400000")#in原创 2015-08-22 15:08:44 · 784 阅读 · 0 评论 -
hdu 5409 CRB and Graph 边双连通分量
题意:给一个n个点m条边的无向图,对于每一条边,输出删掉这条边后不连通的两个点,如果有多个,输出最大的u和最小的v(u < v)。队友居然没有读到这题!!!我居然没有看这题!!!!。。。= = 桥的定义:删掉一条边,使得图不连通。 边双连通分量:除了桥以外的边所连接起来的点。 当然所有的桥都可以找到(tarjan算法) 这道题的难点应该就是在于输出,找最大的u和最小的v。 对于每一条桥,删原创 2015-08-24 22:23:59 · 1058 阅读 · 0 评论 -
UVALIVE 3346 Perfect Domination on Trees 树形DP
题意:给一颗树,从树上找一个点集D,任意从树上选择一点,要么这个点属于点集D,要么这个点的邻居有且仅有一个点属于点集D。看错题了。以为是最小支配集。因为看少一个条件:不在点集D中的点的邻居有且仅有一个点属于D。 设dp[i][j]dp[i][j]为点i在j状态时所要的染色最少点数。 dp[i][0]dp[i][0]为将点i染为黑色 dp[i][1]dp[i][1]为将点i染为白色,儿子为白色原创 2015-09-23 21:31:47 · 648 阅读 · 0 评论