https://vjudge.net/contest/175792#problem/G

题意:有一颗完全二叉树,深度从0至1e9,给出n个数字,分别代表把金属加到深度为a[n]的一个结点上,要求每个放有金属的结点,其通往根节点的路径上的所有结点,都不放有金属,依次放入n个金属,如果能成功放入,输出Yes,否则输出No。每次放金属都以最佳方案放置,比如尽可能放在左边,以能放置更多的结点。

做法:举个例子,放置了2之后,这颗树就不能再放置其他东西了,如果有放置了2个2,则以他们共同的父亲为根节点的子数都不能再放置东西,即2 + 2 = 1。以此向上推,当放入一个数使得出现0,此时还有比0大的数,则不能放置。而且,出现0之后,往后不能放置任何东西了。假设输入为4 4 4 4 4 4 4 4 1 4,则相当于(4),(3),(3,4),(2),(2,4),(2,3),(2,3,4),(1),(0),最后一个不能放。假设输入为2,3,1,1,4,2,则相当于(2),(2,3),(2,3,1),不能放,(2,3,1,4),不能放。

用set存放当前存在的数字(不会出现重复的数字,否则可以向上推),len表示从1开始连续存在到最大的那个数,maxn存当前集合中最大的数,当此时输入的数n小于等于len时,说明该数可以一直加到0,如果此时集合中有大于n的数,则它不能被合并,那么0的出现就是不合法的。如果集合中没有大于n的数,则可以合并所有的数,最后变为0。当输入n时集合中有0,则不能放置n。当n比len大,且在集合中存在时,则一直向上合并,最多能合并到len+1(最大连续长度为len,说明本身一定不存在len+1),合并的同时消除掉原本的那个数。如果集合中不存在n,则直接插入。记得更新maxn。

转载于:https://www.cnblogs.com/Sissi-hss/p/7275870.html

Placing Medals on a Binary Tree相关推荐

  1. Gym 101158G Placing Medals on a Binary Tree

    题意:有一颗无穷大的满二叉树,每一次我们向树上的某一层的某个节点放置奖牌,奖牌排斥的条件为:从该节点到根的路径上无其他奖牌,如果能放置则放置,否则不放跳过,并且要按照输入的顺序放置,每次输出Yes或者 ...

  2. 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  3. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  4. [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  5. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

  6. 二叉树的路径(根节点到叶节点)Binary Tree Paths

    为什么80%的码农都做不了架构师?>>>    问题: Given a binary tree, return all root-to-leaf paths. For example ...

  7. LeetCode - Maximum Depth of Binary Tree

    递归求二叉树的最大深度. /*** Definition for binary tree* public class TreeNode {* int val;* TreeNode left;* Tre ...

  8. Balanced Binary Tree leetcode java

    题目: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bin ...

  9. [leetcode] Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...

最新文章

  1. HK二分图最大匹配算法模板
  2. 【Prometheus】Exporter详解
  3. Java:网络编程值TCP的使用
  4. 2021年春季学期-信号与系统-第八次作业参考答案-第九小题
  5. c++ 多重背包状态转移方程_背包问题之零钱兑换
  6. android 8.0手机开服务端,Android 8.0 + Service开启方式兼容处理
  7. 嵌入式系统文件系统比较 jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs
  8. 增加新分类daily——“每天学了啥?”
  9. 如何在 Java 中正确使用 wait, notify 和 notifyAll?
  10. cmake编译时不能指定头文件路径?
  11. [转]JS弹出div和关闭
  12. 高亮插件Highlighting的使用
  13. Centos 7 Mysql 配置文件位置
  14. 一、Webservice的概念和原理
  15. wps右键失效_鼠标点击右键没有反应怎么办
  16. python 的statsmodels包,计算Wald tests
  17. windows 8 .1全家桶(很详细)
  18. java 正则表达式验证
  19. 报错:Error: The project seems to require yarn but it‘s not installed解决方案
  20. 蓝光影视媒体菜单结构浅析[原版加字幕保留花絮/主菜单/弹出菜单并分割对应PS3]...

热门文章

  1. HTTP Error 503 错误解决办法
  2. 手机设备号到底是什么?
  3. macos系统升级到big sur以后safari浏览器崩溃怎么办?
  4. 京东分布式数据库系统演进之路
  5. 【全民免费wifi上网权威软件】wifi共享精灵谈恋爱的4大境界
  6. 日常水文章之Linux+arm+阿里IOT sdk+Cmake
  7. 【STL】C++ STL超全总结
  8. 2022-08-08 第二小组 张明旭 Java学习记录
  9. BAPI_GOODSMVT_CREATE移库操作(WMS TO SAP)
  10. [总结自用]关于Mbps、Mb/s、MB/s以及Mpps的区别及计算