![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
Ghostkkkk
这个作者很懒,什么都没留下…
展开
-
牛客网暑期ACM多校训练营(第三场)G Coloring Tree 树的BFS性质
链接:https://www.nowcoder.com/acm/contest/141/G来源:牛客网 Christmas is coming! Eddy has received a Christmas tree as gift. Not surprisingly, the tree consists of N vertices and N-1 edges and magically r...原创 2018-07-27 15:28:25 · 159 阅读 · 0 评论 -
741D - Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 树上启发式合并
题意:给你一棵树,每条边有个字符,问对于每个节点,他的子树中最长的好路径是多长。好定义为把路径中字符排列后可以变成回文。题解:路径可以成回文条件是出现次数为奇数的字符数量 <= 1。对于每个点我们用二进制记录他到根节点路径的异或和d[i](把每个字符看成一位)。那么任意路径出现的字符次数就是 d[i] ^ d[j] 。现在要求每个子树,启发式合并即可。还可以用...原创 2018-10-15 20:53:51 · 194 阅读 · 0 评论 -
SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 G.危险路径
https://nanti.jisuanke.com/t/26021给定一个 nn 个点 mm 条边的连通无向图,其中点从 11 到 nn 标号,而每条边有一个危险值。对于任意一条路径,定义路径上危险值的最大值为这条路径的危险值。对于任意不同的两点 uu 和 vv,定义 d(u, v)d(u,v) 为所有从 uu 到 vv 的路径的危险值最小值。对于每个点 uu,定义 f_u = ...原创 2018-10-18 20:29:03 · 186 阅读 · 0 评论 -
Gym - 101669L Divide and Conquer 树上启发式合并
题意:给你一个图,这个图由两个树构成,问全局最小割和方案数。题解:至少一个点度数不超过3,所以答案不超过3。所以一定有一个树只割了一条边,枚举割的边,看子树和非子树点在第二颗树有多少个连边就行了。用启发式合并。代码:#include <bits/stdc++.h>#ifdef LOCAL#define debug(x) cout<<#x<...原创 2018-10-15 17:16:40 · 327 阅读 · 0 评论 -
牛客国庆集训派对Day6 - F kindom DP
链接:https://www.nowcoder.com/acm/contest/206/F来源:牛客网 题目描述X王国有n位官员,编号从1到n。国王是1号官员。除了国王以外,每个官员都有一个上司。我们称这个官员是这个上司的下属。上司的编号总比下属小。我们定义一个官员的影响力为他所有下属的影响力之和再加1。例如,一个没有下属的官员的影响力是1。国王的影响力总是n。任何一位有下属的官员...原创 2018-10-08 17:58:39 · 148 阅读 · 0 评论 -
CF 294E - Shaass the Great 树形DP 推式子
题意:给你一颗带权无向树,你可以改变一条边的位置,使得改变后任意两点仍然可达,问改变后任意两点路径的和的最小值是多少?题解:随便推一推就可以了,思路很简单,只是推的时候一堆bug。枚举改变的边,然后删掉这条边,会构成两个联通块,找到每个联通块中与其他点距离和最小的点,然后那条边连这两个点即可。代码:#include <cstdio>#include <...原创 2018-09-13 21:10:47 · 119 阅读 · 0 评论 -
CF 990F - Flow Control 生成树 思维
题意:给你一个n个点m条边的图,你可以设置每条边的流量,现在要求每个点都得到s[i]的流量,问方案?题解:初看,没法做。肯定是要转换了,我们发现,原图是个连通图,那么我们缩一下边,缩成一棵树还是联通的,可以猜测这样是等价的。实际上是可以证明的,假如原图有一条边连着u, v,流量是c,那么在生成树上,我们可以等价成把u 到v的路径上的流量加c即可。现在变成了树,题目就好做多了...原创 2018-09-18 15:38:40 · 204 阅读 · 0 评论 -
CF 888G - Xor-MST 分治 贪心 字典树 启发式合并
题意:给你一个n个数,每两个数之间边的权值是a[i] ^ a[j]。问最小生成树大小。题解:最小生成树可以用kruskal思想。(其实应该是Boruvka算法,这里记录一下)每次选择最小的边。我们建立一颗01字典树,那么很明显对于一颗子树内的点,他肯定也是连这个子树内的点最好,然后每个子树就会构成一个联通块,去连一条最小的边到兄弟子树,如此递归。相当于每次把两颗子树合并...原创 2018-09-17 21:35:39 · 288 阅读 · 0 评论 -
CF 875F - Royal Questions 图论 想法建图 最大基环树
题意:有n个王子和m个公主,每个公主有两个结婚候选人,还有嫁妆。现在要选择结婚方案使得王子们获得的嫁妆最大。题解:将每个公主的两个候选人连边,那么使得每个王子的入度不大于1即是一种合法的方案。可以发现最后要么是基环树,要么是树。那么我们利用最大生成树算法同样的思想即可求出最大嫁妆。代码:#include <cstdio>#include <iost...原创 2018-09-10 17:13:33 · 285 阅读 · 0 评论 -
CF 965E Short Code 贪心 字典树 启发式合并
题意:给你N个字符串,每个字符串可以缩写为他的前缀,但是必须保证所有串缩写后不重复,并且最后总长度最小。题解:先建立字典树,然后我们可以想到,在dfs的时候,如果当前节点本来没有串,那么他可以存他子树中某个串,我们用优先队列找到他子树的最长的节点,然后把这个节点代表的串用当前节点串代替,这样贪心即可。但是对于每颗子树都要建立一个优先队列存他子树中所有的串长。对于这点我们可以用启发式...原创 2018-09-06 21:35:30 · 159 阅读 · 0 评论 -
CF 980E - The Number Games 贪心 倍增
题意:给你一颗无根树,每个点的权值是2^i,你要从中删除k个点,使得最后剩下的权值最大,并且是联通的。题解:反方向考虑保留n - k个点。由于保留一个i要比保留所有小于i的节点的和都大,所以我们贪心的保留n, n-1, n-2.....我们以n为根节点建树,然后从n - 1遍历到1, 对于节点i,如果他到已经保留的节点的距离小于剩下可以保留的点数,则保留他们,否则跳过。这样我们...原创 2018-09-06 19:01:40 · 167 阅读 · 0 评论 -
CF 1029E Tree with Small Distances 树形DP or 贪心
题意:给你一颗树,问你要使1号节点到所有节点的距离不超过2,最少添加多少边?题解:显然添加的边肯定连1好。利用树形DP。我们设dp[i][j]为i号节点到1的距离为j,并且i号节点的子树都满足要求的最少边数。这样dp[n][2]即可,dp[i][1] = (i == 1 || par == 1 ? 0 : 1)但是dp[i][2]有两种情况,一种是i节点经过父亲再到...原创 2018-09-05 20:16:54 · 181 阅读 · 0 评论 -
935E - Fafa and Ancient Mathematics 表达式树 树形DP
题意给你一个表达式,只包含括号,数字,加号和减号。现在把所有加号和减号删去,问你在这些位置填加减号之后表达式的值最大是多少。min(加号数量,减号数量) <= 100字符串长度 <= 10000题解建一个表达式树,然后在树上进行DP。表达树上每个节点都是一个表达式,可以用栈来建立。mx[i][j], mi[i][j] 表示i号节点用了j个数量少的符...原创 2018-08-23 20:47:00 · 223 阅读 · 0 评论 -
HDU - 6430 TeaTree 启发式合并
题意给你一个树,每个点有个权值v[i]。每两个点i, j会告诉他们的LCA一个值gcd(v[i], v[j])。现在问每个点所听到的最大的值。n <= 1e5, v[i] <= 1e5题解树上启发式合并。对于每个节点,用set记录它的子树存在哪些因子, 取所有出现两次的因子的max。要求出这个set,我们对于它所有的儿子的set,看哪个大,每次把小的一个...原创 2018-08-22 22:41:56 · 218 阅读 · 0 评论 -
HDU - 6393 Traffic Network in Numazu 树链剖分 基环树
Problem DescriptionChika is elected mayor of Numazu. She needs to manage the traffic in this city. To manage the traffic is too hard for her. So she needs your help. You are given the map of the ci...原创 2018-08-14 20:28:47 · 336 阅读 · 0 评论 -
CF 1009F - Dominant Indices 树上启发式合并
题意:给你一颗有根树,定义每个节点的答案为i,当i是他子树中所有与他的距离中,数量最多的最小距离。题解:树上启发式合并。记录深度的次数最大值即可。代码:#include <bits/stdc++.h>#ifdef LOCAL#define debug(x) cout<<#x<<" = "<<(x)<<endl...原创 2018-10-21 23:25:19 · 258 阅读 · 0 评论