首页 > 种树
头像 肖先生~
发表于 2020-12-12 23:23:09
种树 题目分析:这个题目其实我们要抓住一个点,那就是我们先用小剪刀,最后再用大剪刀,比如我们没有用完小剪刀就用大剪刀的话,那么最后的值不一定是最大值,假如我们事先用大剪刀把大的值传递过来,中间只要用了一次小剪刀那么前面传过来的值都没用了,也就是说这种情况相当于一次小剪刀就抵消了几次大剪刀,那么显然最 展开全文
头像 pandaC222
发表于 2026-02-20 01:22:24
我们主要考虑什么时候用大剪刀,可以使用大剪刀的次数为(m+1)/2,为了使根的值最大,我们一定要在1处使用大剪刀,为了使一的两个左右节点大,我们也要选择使用大剪刀,由此可推出我们要在靠近1的分叉去使用大剪刀,这里设1的深度为1,举个例子,我们能使用大剪刀的次数为2,那我们要在深度小于2的时候使用大剪 展开全文
头像 此在Dasein
发表于 2026-02-20 03:57:21
这是一个经典的树上最优化问题,结合了二分答案与树形动态规划(Tree DP)。 一、 问题分析 树结构特征: 题目描述了一棵满二叉树结构,即树中的每个节点通常被称为“内部节点”(有两个子节点)或“叶子节点”(无子节点)。 初始时,只有原始叶子节点的生命力数值是有效的决策依据。尽管输入给出了所有 展开全文
头像 青菜_VC
发表于 2020-11-15 16:47:07
2020-11-14牛客小白月赛29-D [by_041] 看题,分析,大剪刀就是用来搬运大数的,多大呢?在(0m+1)/2层内最大的 那么答案就很明显了,(m+1)/2内的深度返回大值,其余返回小值 附上代码 #include<iostream> using namespace 展开全文
头像 _已被标记为苯环迷弟Jakeap
发表于 2026-02-21 00:16:29
首先理解一下题意(我一开始其实没看懂),是先给出每个结点的左右结点,再在一行中给出每个结点的val值。我觉得有一个不好的点就是他默认了树的结点编号是按顺序1到n并且给出的左右结点正好是编号代表,没有说明清楚我感觉(个人感觉)这个树是只有度为2的结点和度为0的结点,我们要去用两种剪刀去减去这些度为2的 展开全文
头像 YunBaichuan
发表于 2026-02-20 10:18:13
思路:贪心。为了保证根节点具有最大的生命值,我们可以用一个贪心策略:大剪刀能用次,那么就在前m层使用大剪刀,后更深的层使用小剪刀即可。并且题目说了,每次修剪为左右孩子到根,这个顺序天然和后序遍历一致。因此,我们就可以递归算一遍后序遍历,以及对应节点的深度;之后,再用贪心策略求出最终的答案并输出即可 展开全文
头像 狂点技能树
发表于 2020-11-16 20:05:57
我是题目链接 看了很多大佬的写法,一般都是树+深搜递归,但是个人总觉得如果是这样的话 5e5 来个恶心的树结构还是担心爆了(不过觉得用栈可能还是会比较好,在这里就只是谈一下我的一个比较 nc 的做法吧 首先,推出修剪次数=n/2,所以m=(n/2+1)/2。下一步就是猜测了,设想一下,如果能保证通往 展开全文

等你来战

查看全部