树的结构
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
ZOJ 3965
这题有点像给出中序遍历和后序遍历求树的结构这样的题,就是分段去递归考场上没有A掉,算法上出现了一些小错误。我们对递归的la,ra,lb,rb表示这两段在原树上是同一段,然后记录一个root,表示当前子树中最深的一个可以当根节点在a数组中的下标是多少,然后从前往后扫,如果有不一样的,那么这两个点一点连上当前的root,注意如果当前的root已经有2个儿子了,那么root=fa[a[root]...原创 2018-08-30 22:35:59 · 252 阅读 · 3 评论 -
ZOJ - 3820 B - Building Fire Stations
从一棵树取出两个点x1,x2,对于一个点x,dist[x]=min(dis[x1],dis[x2]),问这个dist[x]的最大值最小是多少。对于一个点,他的最远点之一是某一条树的直径的端点(因为求树的直径就是随便找一个点找到任意一个最远点,把他当树的直径的端点之一)那我们只要取出任意一条树的直径长度为a[0]放到a数组中,a[1]......a[a[0]],然后二分答案mid,那么取得点...原创 2018-11-25 14:35:20 · 185 阅读 · 0 评论 -
2019牛客多校第四场 A meeting
考场上写了一大坨树形DP,写的时候就感觉我这不是跟求树的最长链写的一毛一样然后考后看题解,果然是k个ren所连成的子树的最长链的一半可以利用反证法证明,如果在长度为d的最长链的中间放一个中心,如果有另外一个点到这个点的长度>(d+1)/2,那么这个点到对面的那个点的长度大于d,所以不存在这样一个点。#include<bits/stdc++.h>#define ma...原创 2019-07-27 21:20:10 · 497 阅读 · 0 评论 -
hdu6727 Quasi Binary Search Tree 2019百度之星复赛
http://acm.hdu.edu.cn/showproblem.php?pid=6727其实本质就是一个中序遍历的问题,我们会尽可能先走向编号最小的点。那么只要用一个计数器来标记每个点的编号就行了。但是本题有很多坑当前根节点的编号要比左右子树中最小的点都要小的时候,那么比较左子树右子树的size,先走小的size那边,才能让当前根节点的序号尽可能小。如果sz相等,还是要比较左右子树...原创 2019-08-31 23:50:14 · 220 阅读 · 0 评论