随笔分类 - 树
摘要:嘟嘟嘟 水题一道,某谷又恶意评分。 合并无非是将两棵树的直径的中点连一块,记原来两棵树的直径为$d_1, d_2$,那么新的树的直径就是$max(d_1, d_2, \lceil \frac{2} \rceil + \lceil \frac{2} \rceil + 1)$,用并查集合并,更新即可。
阅读全文
摘要:嘟嘟嘟 这种复杂的概率大题我果然是每做出来…… 然后我找到了一篇极棒的题解,小学生都能看懂(大佬就是大佬啊):题解 P4284 【[SHOI2014]概率充电器】,第二次dp的状态方程真的很妙啊。 刚开始我总按照套路想设$dp[u]$表示$u$的子树的期望,看完题解后发现这是没有依据的,因为每一个元
阅读全文
摘要:嘟嘟嘟 这题刚开始犹豫了一会儿,以为“高明”的优先级大于“谈笑风生”,不过样例表明只要两点间距离不超过$x$,两人就算”谈笑风生“。 接下来看看怎么回答询问。 首先$a$是固定的,且$a,b$都是$c$的祖先。那就得分类讨论: 1.$b$是$a$的祖先,那么$c$就是$a$的子树中的所有点,根据乘法
阅读全文
摘要:嘟嘟嘟 这题卡精度!,我对拍了近1w组数据都没拍出来,辛亏最后看了HDU的讨论版。 首先对于每一个房间,令$x_u$表示从这个点出发的期望步数,很容易列出方程:\(x_u = K_i * x_1 + (1 - K_i - E_i) * (1 + \sum x_v)\)。 当我快快乐乐的写完了高斯消元
阅读全文
摘要:嘟嘟嘟 这题还给样例解释了,那自然能想到dp。 因为比赛形式构成了一个树形结构,而且还和线段树的结构一模一样,那就索性这么dp:令$dp[u][i]$表示在节点$u$,$i$获胜的概率。 然后我们枚举左右儿子谁赢,就很容易搞出转移方程:\(dp[u][i] = \sum dp[u << 1][i]
阅读全文
摘要:"嘟嘟嘟" 首先这题虽然不是很难,但是黄题是不是有点过分了……好歹算个蓝题啊。 手玩样例得知,这哥们儿瞬移到的城市$A$一定是这些被攻击的城市构成的树的一个叶子,然后他经过的最后一个城市$B$和$A$构成的链一定是这棵新构成的树的直径(突然想到虚树)。 别激动,这题根本不用虚树。 我们只用求一遍树的
阅读全文
摘要:"嘟嘟嘟" 这题有点意思。 手玩得知,连上一条边后,形成的环只用走一次,剩下的还要走两次。 因此$k = 1$就是求树的直径。 $k = 2$怎么办咧?也是先求一遍树的直径,然后我就想,连上端点后就变成了一个基环树,我们要在这个基环树上再连一条边,使(新形成的环的长度) (与原环相交长度)尽可能大。
阅读全文
摘要:嘟嘟嘟 这题真没想到这么简单…… 首先有60分大礼:$O(n ^ 2logn)$贪心。(我也不知道为啥就是对的) 然后又送15分链:维护两个堆,每次去堆顶的最大值。 这时候得到75分已经很开心了,但其实离AC也就差一点点。 链的做法已经给了我们提示:合并两个堆。其实这就相当于二叉树。那多叉树呢?就合
阅读全文
摘要:嘟嘟嘟 判断树的同构的方法就是树上哈希。 如果树是一棵有根树,那么只要从根节点出发dfs,每一个节点的哈希值等于按传统方式算出来的子树的哈希值的结果。需要注意的是,算完子树的哈希值后要先排序再加起来,因为两个互为同构的树可能子树顺序不同,以哈希值作为关键字排序,就能保证相同的子树位置也相同了。 对于
阅读全文
摘要:"嘟嘟嘟" 这题乍一看挺水的,似乎和选课一样,但其实不太一样,因为,他有环。 但这也并没有多难,我先说正解,然后分享一下我奇特的错误算法。 正解很好想,因为环中的点是不必须选的(没错,只有环中的点),因此用tarjan缩点,然后重新建图,跑树形dp就行了。 我的奇特想法是啥咧?我不知咋想的,认为只要
阅读全文
摘要:"嘟嘟嘟" 这题刚开始想复杂了,想什么dp去了,其实没那么难。 考虑断掉一条边,记分离出来的两棵子树为A和B,那么合并后的树的直径可能有三种情况: 1.A的直径。 2.B的直径 3.A的半径+边权+B的半径。 半径是啥?记从点$i$出发到树上任意一点的最长距离为$f[i]$,则树的半径就是$min
阅读全文
摘要:"嘟嘟嘟" 这题想了半天,搞出了一个$O(10 d n)$($d$为$n$的约数个数)的贪心算法,就是能在子树内匹配就在子树内匹配,否则把没匹配的都交给父亲,看父亲能否匹配。交上去开了O2才得了60分。按讨论中的方法卡常后还是A不了,就放弃了。 正解需要推一个结论,就是一棵树能被分成$x$个大小相同
阅读全文
摘要:嘟嘟嘟 这题今天我们学校模拟出了,我没做出来,搞了个暴力得了30分…… 正解现在看来挺显然的,考场上之所以没想到可能是因为第二题就卡住了吧,导致想第三题的时候有些焦躁。 首先,一个奇环是必须要选出一条边的,而一个偶环是一定不能选出一条边的。这也就可以拿到$n = m$的部分分:一遍dfs求出环的点数
阅读全文
摘要:嘟嘟嘟 偶尔翻到的一道题。 50分暴力很好想,对于每一个点进行一次拓扑排序,然后每一次别memset,只清空走过的点,能拿到70分。 正解好像也挺好想,是一个叫“灭绝树”的东西。 对于一个点$i$,他能否被饿死由他的所有食物决定,而他的所有食物能否被饿死有这些食物的lca决定。所以这时候把lca和$
阅读全文
摘要:嘟嘟嘟 鉴于一些知道的人所知道的,不知道的人所不知道的原因,我来发NOIPday2T1的题解了。 $O(n ^ 2)$的做法自然很暴力,枚举断边断环为链就行了。 所以我是来讲$O(nlogn)$的做法的。 准确说是排序复杂度,剩下的都是$O(n)$的。 大体思想就是通过一遍dfs$O(n)$找到该断
阅读全文
摘要:"嘟嘟嘟" 因为一些知道的人所知道的,不知道的人所不知道的原因,我来~~改~~写今年的NOIP了。 现在看这题,心中满是疑问:我当时是多么的zz,这种水题为啥没做出来…… 不管了,说正事。 先考虑部分分。 1.$n \leqslant 15$ 不会。 2.$m = 1$ 带权树的直径啊。树形dp一下
阅读全文
摘要:"嘟嘟嘟" 首先这一眼看出来,要树形dp。 然后发现状态不好设,刚开始我想的是dp[i][j]表示以$i$为根的子树,选了$j$个黑点的最大价值。结果就不会转移了。 转移的时候想考虑$$这一条边的贡献,但是发现这个状态的转移所涉及的不只是这一条边,还有子树中的边,于是就彻底gg了。 还是看了题解。
阅读全文
摘要:"嘟嘟嘟" 一句话题意:求带权基环树森林中每一个联通块的最长路之和,路径为简单路径。 其实这道题不难,只不过是吧好多知识拼接在了一起。 看到基环树,就会想到断环为链,为了能枚举到所有路径,要把链翻倍乘2。 现在得到了一个序列,上面的每一个点表示外向树的树根。 那么一条最长路可能有两种情况: 1.单独
阅读全文
摘要:嘟嘟嘟 学树上莫队的时候给我推了糖果公园,然后题解说最好先把这道题做了,于是我就来了 这道题好像就是所谓的树上分块。 题中的限制很宽,只要输出任意一种合法方案就行。那么在dfs的时候自然能想到如果当前子树大小大于$B$的话,就把这个子树分成一块。 但这么做肯定不对,因为如果只扣掉一棵子树的其中一部分
阅读全文
摘要:"嘟嘟嘟" 前缀和+倍增+树上差分 假设$v$是$u$子树中的一个点,那么$u$能控制$v$的条件是受$v$的权值的限制,而并非$u$。因此我们就能想到计算每一个点的贡献,即$v$有多少个祖先能控制它。这样就能想到暴力的做法:枚举每一个点$i$,向上爬直到两点间距离大于$a_i$为止。然后树上差分(
阅读全文

浙公网安备 33010602011771号