luogu P4006 小 Y 和二叉树】的更多相关文章

luogu loj 可以发现度数\(< 3\)的点可以作为先序遍历的第一个点,那么就把度数\(< 3\)的编号最小的点作为第一个点.然后现在要确定它的左右儿子(或者是右儿子和父亲).我们把第一个点作为根,设\(f_x\)为\(x\)子树内先序遍历第一个点的最小值,一遍树型dp求出来 做的时候要用个变量记录这个点要放左右儿子还是右儿子和父亲,如果当前这个点是上一个点的父亲(或者是第一个点),那么这个点就要放右儿子和父亲,否则放左右儿子 如果只有一个儿子\(y\),就比较两种方式哪一种得到的下一个…
题目描述 小 Y 是一个心灵手巧的 OIer,她有许多二叉树模型. 小 Y 的二叉树模型中,每个结点都具有一个编号,小 Y 把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下方与右下方,且他们也都满足这样的悬挂规则.为了让这个模型更加美观,小 Y 选择了一种让这棵二叉树的中序遍历序列最小的悬挂方法.所谓中序遍历最小,就是指中序遍历的结点编号序列的字典序最小. 一天,这个模型不小心被掉在了地上,幸运的是,所有结点和边都没摔坏,但是她想不起这个模型原来是怎么悬挂的了,也就是…
Loj #2324. 「清华集训 2017」小 Y 和二叉树 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下方与右下方,且他们也都满足 这样的悬挂规则.为了让这个模型更加美观,小Y选择了一种让这棵二叉树的中序遍历序列最小的悬挂方法.所谓中序遍历最小,就是指中序遍历的结点编号序列的字典 序最小. 一天,这个模型不小心被掉在了地上,幸运的是,所有结点和边都没摔坏,但是她想…
[LOJ#2324]「清华集训 2017」小Y和二叉树 试题描述 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下方与右下方,且他们也都满足这样的悬挂规则.为了让这个模型更加美观,小Y选择了一种让这棵二叉树的中序遍历序列最小的悬挂方法.所谓中序遍历最小,就是指中序遍历的结点编号序列的字典序最小. 一天,这个模型不小心被掉在了地上,幸运的是,所有结点和边都没摔坏,但是她想…
原文链接 www.cnblogs.com/zhouzhendong/p/UOJ339.html 前言 好久没更博客了,前来更一发. 题解 首先,我们考虑一个子问题:给定根,求出最小中序遍历. 如果根节点有一个儿子,那么,我们需要比较根节点和 儿子的最小中序遍历的第一个元素,选择较优的一方放在前面. 如果根节点有两个儿子,那么,我们必然选择最小中序遍历较小的儿子放在左儿子. 由于所有节点编号互不相同,所以我们在比较两个部分的字典序时,只关注第一个元素的大小. 可以发现,一个有两个儿子的节点是不可能…
https://loj.ac/problem/2324 太智障,一开始以为中序遍历的第一个点一定是一个叶子,想了个贪心.然而,手算了一下,第一个点都过不了啊. input 5 2 3 4 1 3 3 5 1 2 1 1 1 3 output 1 2 3 5 4 如果树的形态确定,那么第一个中序遍历应该是,从根开始一直往左儿子走,直到当前点没有左儿子,那么这个点就是第一个走到的点. 这个点的度一定$<3$. 于是把贪心稍微换了换,一不小心就A了. 我们找到度$<3$的编号最小的点$d$作为中序遍…
题目链接 瞎jb贪一发就过了.首先度数<=2且编号最小的点一定是中序遍历最靠前的点,我们从这个点开始dfs一遍算出子树中度数<=2且编号最小的点记为\(f(i)\),然后从这个点开始一步一步确定出它到根的路径. 如果这个点度数还剩2(也就是除掉之前确定的左儿子后的度数),那么选\(f(i)\)小的作为右儿子,如果度数剩1,那么比较\(f(i)\)与i谁更小,若\(i<=f(i)\)则把i作为父亲否则作为右儿子.每次不断跳到它的父亲,没父亲了就是根了,之后的事就是把这条链上的每个点的右儿子…
LINK 思路 首先贪新的思路是处理出以一个节点为根所有儿子的子树中中序遍历起始节点最小是多少 然后这个可以两次dfs来DP处理 然后就试图确定中序遍历的第一个节点 一定是siz<=2的编号最小的节点 这样肯定是最小的 那么来考虑从这个节点向右上和右下方扩展整棵树 一定是不能向左上或左下,不然就不优秀了 如果当前节点右除了左下有两个儿子,那么最小值小的放在右下,递归处理,大的放在右上,递归处理 如果只有一个儿子,就比较儿子和当前节点的大小并递归处理就可以了 好题啊 //Author: dream…
传送门 膜拜大米饼巨巨 构造思路太神仙了-- 先考虑这个序列的开头,肯定是一个度数小于等于\(2\)且标号最小的节点,设为\(u\) 如果一个点度数小于等于\(2\),我们称这个点可以被选择,一个点的\(mn\)为它的子树中(不包括子树的根)能被选择的点中最小的标号 那么如果能够确定根节点,只要从根节点往下\(dfs\),然后每次贪心的选择\(mn\)小的那个节点就好了 为了找到根节点,我们从\(u\)开始往下\(dfs\),先预处理出以\(u\)为根时所有节点的\(mn\),那么每一次往下走的…
题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天,她正在玩一款游戏,要打一个 Boss. 虽然这个 Boss 有 10100 点生命值,但它只带了一个随从—---一个只有 m 点生命值的 ‘‘恐怖的奴隶主’’. 这个 ‘‘恐怖的奴隶主’’ 有一个特殊的技能:每当它被扣减生命值但没有死亡(死亡即生命值 ≤ 0),且 Boss 的随从数量小于上限 k…