首页 > 其他分享 >Snowy Mountain (找规律来贪心+ 多源特殊bfs+根号n)

Snowy Mountain (找规律来贪心+ 多源特殊bfs+根号n)

时间:2022-10-21 11:59:37浏览次数:81  
标签:Mountain 势能 Snowy 平台 高度 节点 根号 贪心

题目大意:

  • 给定一棵 nn 个点的树,其中每个点可能是黑色或白色。
  • 一个点的高度定义为其距离最近黑色节点的距离。
  • 你初始在 ii 号节点上,势能为 00,可以做以下两种操作:
  • 向高度更小的相邻节点移动,增加 11 的势能。
  • 向高度相同的相邻节点移动,减少 11 的势能,这个操作只能在你的势能 \geq 1≥1 时执行。
  • 对于 i=1,2,\cdots, ni=1,2,⋯,n,求出你能做的操作数的最大值。
  • n\leq 2\times 10^5n≤2×105。

思路:

  • 首先通过BFS将每一个点的高度给求出来
  • 找规律,通过规律来贪心, 发现 每一个高度为 h 的点,一定可以走 h步, 在加上h的势能, 这个点可以到一个平台(h=b) (就可以将那部分h-b的势能转化为操作数)
  • 于是就贪心的看 每一个点 所到的平台的高度最小是哪里就行了 
  • 继续找规律, 发现这个平台(几个相同高度的点想连接在一起) ,一个要组合成一个平台(高度=h),就至少需要花费 2*h个点. 不同高度的平台个数最多为根号n,
  • 证明: n个不同高度的平台需要的点数为: 2*(1+2+3+4+5+6+......)=n*(n+1); 所以 不同高度的平台个数最多为根号n,
  • 然后从平台高度入手,看哪些点可以到他, 由于是树, 边权也不奇怪, 传递也是有规律, 就多源 bfs层数, 同层 +1, 不然就-1, 点权值<=0,即可  

 

标签:Mountain,势能,Snowy,平台,高度,节点,根号,贪心
From: https://www.cnblogs.com/Lamboofhome/p/16812975.html

相关文章

  • 根号算法学习记录
    根号算法专题分块基础根号平衡对于两个不同方面的复杂度,直接做的话一个很小,一个很大,我们用根号使得两者复杂度同阶级以降低总复杂度。这个叫根号平衡。一个典型的应用......
  • 洛谷 P8572【暴力】【根号分治】
    根号分治。需要进行分类讨论:当\(n\lek\)的时候,可以进行暴力\(\#1\):暴力求出数组所有区间的最大值。(需要使用前缀和)否则,可以使用一个叫做“记忆化”的鬼玩意。如......
  • 【luogu CF1553F】Pairwise Modulo(树状数组)(根号分治)
    PairwiseModulo题目链接:luoguCF1553F题目大意给你一个序列,对于每个前缀,要你求两两互相取模的结果的和。思路考虑新加入一个数增加的答案。那就是加两个部分:\(\sum......
  • 基于systemgenerator的根号计算
    一、系统设计仿真结果以及硬件资源估计(用于复制到你的那个txt文件中去即可。)顶层框图: 整个系统的结构如下所示: 进入内部模块则有: 其主要由三大部分组成: 第一部分:输入信......
  • 2022牛客OI赛前集训营-提高组(第一场) 奇怪的函数 根号很好用
    奇怪的函数考虑暴力,每次查询\(O(n)\)扫所有操作,修改\(O(1)\)这启发我们平衡复杂度,考虑分块。观察题目性质,可以发现,经过若干次操作后得到的结果一定是一个关于\(x\)的分......
  • POJ 2110 Mountain Walking(二分 枚举 BFS)
    POJ2110MountainWalking(二分枚举BFS)题目:​ 给出一张\(n*n(n\le100)\)的地图,每个点都有一个点权\((val\le110)\),可以任意选择路径,请问从(1,1)走到(n,n)的路......
  • 【luogu P4218】珠宝商(SAM)(点分治)(根号分治)
    珠宝商题目链接:luoguP4218题目大意给你一棵树,每个点有一个字符。再给你一个字符串s。然后问你树上的所有简单的路径在s上的出现次数的和。思路一个比较神奇的题......
  • CF804D Expected diameter of a tree(期望+根号分治)
    tag期望,根号分治。大致题意:给你一个森林,每次询问两个点,求把两个点所在联通块连接起来生成的树的直径的期望。分析:如果是期望的话,只需要求出所有可能情况下的能生成的......
  • self-attention为什么要除以根号d_k
    参考文章:https://blog.csdn.net/tailonh/article/details/120544719正如上文所说,原因之一在于:1、首先要除以一个数,防止输入softmax的值过大,导致偏导数趋近于0;2、选......
  • python不用库求解根号N
    问题描述我们需要在不使用库的情况下求解\(\sqrt{n}\)。方法一:二分法令\(y=\sqrt{x}\),问题转换为求得y,使得\(y^{2}-x=0,(x>=0)\)。我们令\(f(y)=y^{2}-x\)。注意到:\[......