UVa 1354 天平难题 (枚举二叉树)】的更多相关文章

题意: 分析: 其实刚看到这题的时候觉得很难, 以至于结束了第七章然后去做了一遍第六章树的部分.现在再做这题觉得思路并不是太难,因为总共就只有六个结点,那么只要枚举二叉树然后算出天平然后再从叶子往上推就能得出这棵树的宽度.这题我觉得主要难点是如何去枚举二叉树,其实这就是回溯法的核心.先去dfs选这个作为结点的, 然后还原, 再做不选的dfs, 这样就能没有遗漏(但会有重复)地枚举二叉树了. 这题还有个细节是一个天平中,左子树的右长度可能会超过天平右臂 + 右子树的长度, 如下图 那么就不能单纯地…
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4100 题意:给出房间的宽度和挂坠的重量,设计一个尽量宽的天平,挂着所有挂坠,当然不可以超过房间宽度. 这道题我真的是一点想法都没有,也不知道怎么去枚举二叉树好,下面都是参考别人的代码,我自己也思考了很久,总算是搞清楚了,用二进制法来枚举子集,太妙了. 这样一来也就可以不用特别考虑右子树的左…
整个题考虑起来 最主要要计算的状态 是树的状态 于是要计算出所有可能挂坠可能组成的树的所有形态 tree 用于保存这些状态 考虑不要重复计算,有一个vis 数组 预处理可以先计算出一棵树的重量,简化计算#include<stdio.h> #include<iostream> #include<vector> #include<algorithm> using namespace std; const int maxn=6; int w[6];//各个重量 i…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5…
题目链接 题意: 在一个宽为r 的房间里, 有s个砝码, 每个天平的一端要么挂砝码, 要么挂另一个天平, 并且每个天平要保持平衡. 求使得所有砝码都放在天平上, 且总宽度不超过房间宽度的最大值. 思路: 每个节点只能有两个子节点, 这是一棵二叉树的形式. 通过枚举二叉树的形态, 再枚举每一个叶子节点所放砝码, 最后再计算每个方案的宽度并计算答案. 每增加一个天平, 那么可以放砝码数 + 1. note: 坑在0的输出了, 用primtf("%.9lf\n", 0)输出来的是0  用0.…
UVA.839 Not so Mobile ( 二叉树 DFS) 题意分析 给出一份天平,判断天平是否平衡. 一开始使用的是保存每个节点,节点存储着两边的质量和距离,但是一直是Runtime error.也不知道到底是哪里出了问题,后来发现直接判断当前是否平衡,若下面还有节点,接着递归调用dfs判断,这样一来省去了存储节点所需要的空间和时间,效率大大提升. 代码总览 #include <iostream> #include <cstdio> #include <cstring…
UVA.699 The Falling Leaves (二叉树 思维题) 题意分析 理解题意花了好半天,其实就是求建完树后再一条竖线上的所有节点的权值之和,如果按照普通的建树然后在计算的方法,是不方便实现的,思维转换,在数组中实现,从根节点,向左的话即在a[root-1]的位置累加上节点权值,再向左即在a[root-2]位置累加权值,向右则在a[root+1]的位置累加权值,以此类推,方可实现求和的要求. 代码总览 #include <cstdio> #include <cstring&…
UVA.679 Dropping Balls (二叉树 思维题) 题意分析 给出深度为D的完全二叉树,按照以下规则,求第I个小球下落在那个叶子节点. 1. 默认所有节点的开关均处于关闭状态. 2. 若有小球下落在关闭状态的节点时,走向其左子树,否则走向其右子树. 3. 小球下落到某个节点,通过后开关反转. 模拟肯定不行,要根据树的特点和下落规则找简单办法.首先一个球下来,开关的状态要么是开要么是关,而且是交替进行,于是小球走的方向,是与小球是当前节点第几个球是有关系的.不难发现,对于每一个节点来…
原题:https://uva.onlinejudge.org/external/13/1354.pdf 有s块石头,每块都被一根绳子吊着,如果有两个及以上的石头,需要平衡的天平把所有的石头挂起来. 房间的宽度为r,问小于房间宽度r的天平的最大宽度. 分析: 是个回溯枚举的问题,枚举中途如果发现当前宽度已经大于r,回溯. 难点: 也可以说是亮点,就是枚举所有的二叉树,一个天平可以看成是一个二叉树. 具体点说递归建立二叉树的过程就是每次从包含所有节点的集合中选择两个节点,合二为一 所以我们建树的过程…
传送门1(UVa): https://uva.onlinejudge.org/external/13/1354.pdf 传送门2(GOJ): http://acm.gdufe.edu.cn/Problem/read/id/1320 题意: 长度限制 r (1 < r < 10), 给 n (1 <= n <= 6) 个砝码,组成平衡(考虑重量和力臂)的天平,求天平最长能多长. 2015个人选拔赛#6 1004 比赛的时候完全不知道怎么做,比赛完两天重新看一遍有点思路就是敲不出来(弱…