首页 > 其他分享 >P1232 [NOI2013] 树的计数

P1232 [NOI2013] 树的计数

时间:2023-11-01 09:01:38浏览次数:49  
标签:结点 遍历 所在 NOI2013 DFS BFS 计数 分层 P1232

首先要明确,对于一个结点,其儿子的遍历顺序是确定的,在 DFS 序和 BFS 序中相同。

而 BFS 序更容易确定一棵树的深度,只需要知道在哪些结点分了层。

所以可以通过 DFS 序来确定 BFS 中的分层方案。

然后分类讨论:

  • \(BFS_u+1=BFS_v\),\(DFS_u>DFS_v\),相差恰好一层。若同层则说明 DFS 先进入了 \(v\) 所在的子树,BFS 必然也先遍历到 \(v\) 点,不合法,所以必定分层,平均贡献为 \(1\)。
  • \(BFS_u+1=BFS_v\),\(DFS_u<DFS_v\),此时存在两种情况均可以发生
    • \(u\) 没有儿子,\(v\) 是 \(u\) 的兄弟。
    • \(u\) 是 \(v\) 的父亲,\(u\) 是它所在层最后遍历到的结点,\(v\) 是它所在层最先遍历到的结点。换句话说就是 \(u\) 所在层的其它结点都没有儿子了。

这两种情况 BFS 序中之后结点分布条件完全相同,即对后面无影响,可选任意一种,平均贡献为 \(0.5\)。

刚刚我们对 BFS 中相邻的结点进行了是否分层的讨论,而 DFS 序的约束其实我们没有考虑完全:

  • \(DFS_u+1=DFS_v\),\(BFS_u>BFS_v\),\(u\) 是 \(y\) 前面一个兄弟的子树内最后一个 DFS 到的结点,此时 \(v\) 的深度只要比 \(u\) 浅即可。但我们并不需要去进行限制,因为按 BFS 序正常做中间肯定有地方会分层。
  • \(DFS_u+1=DFS_v\),\(BFS_u<BFS_v\),\(BFS\) 序中在 \(u\) 和 \(v\) 中间的结点肯定是前一部分与 \(u\) 深度相同,后一部分与 \(v\) 深度相同。如果 \(BFS_u+1<BFS_v\),和上面同理,肯定有恰好一个地方会强制产生分层(否则就不合法了),而剩下那些可分可不分的就一定不能分,这里需要进行一个限制,用差分实现。

相邻结点的讨论已经足够完备了。

标签:结点,遍历,所在,NOI2013,DFS,BFS,计数,分层,P1232
From: https://www.cnblogs.com/landsol/p/17802249.html

相关文章

  • 【FPGA】计数器 —— 时序逻辑
    小边想要日更!盲猜明天就会断hh,因为明晚我应该在疯狂看计网。。文章目录1.设计输入2.功能仿真3.板子调试时序逻辑基本概念:输出还与时钟信号相关D触发器-也就是有“记忆”特性,能存储电平状态计数器基本概念,基本4位加法器结构图计数值与技术时间之间的关系1.设计输入设计一个......
  • 一小类计数问题的整理
    MyBlogs开个新坑,目前大多数是蓝书上的题。不会更高级的东西,只写怎么数数,不考虑高级优化。状态设计:这里满足的要求不再是无后效性,而是要求一个阶段的所有状态能不重不漏的覆盖掉所有情况。转移:寻找合适的基准点,围绕这个基准点把大的状态拆出一个小的不可划分的状态,和剩下的状......
  • 13_计数器
    计数器同步计数器和异步计数器的区别同步二进制计数器--74LS161集成计数器十进制计数器--74LS192集成计数器利用74LS192实现100进制计数器任意进制计数器的方法74LS160集成计数器(十进制同步计数器)74LS160反馈法构成6进制计数器进行举例反馈置0法好......
  • 算法学习笔记(32): 格路径与计数
    格路径与计数这属于组合数学里面的东西,单独拿出来谈上一谈。最简单的计数:从\((0,0)\)只能向右或者向左走到\((n,m)\)。首先有一个很naive的DP:\(f_{i,j}=f_{i-1,j}+f_{i,j-1}\)。然而如果我们稍微变换一下坐标,旋转45度,那么递推式变为:\(g_{k,j}=g_{k-1......
  • 统计数字出现的次数
    输入一个长度不超过100000位的整数,接下来再输入n个询问,每个询问输入整数l,r,x。对于每个询问,输出原数中从第l位数到第r位数中x出现的次数。【数据范围】1≤l≤r≤10^5,1≤n≤10^5,0≤x≤9输入格式第一行包含一个整数n。第二行是一个不超过100000位的整数。接下来n行,每行......
  • 小莫的计数(简单版本)
    链接:I-小莫的计数(简单版本)_2023新疆大学新生赛(nowcoder.com)困难版本不会写就不放出来了  题意:给你m个约束,b前字符不能是a,长度为n的字符串有多少种不同方式 set里存约束关系,两个for遍历找满足的条件voidsolve(){mp['M']=0;mp['O']=1;mp['N']......
  • MySQL学习(9)统计数据
    存储方式MySQL提供了两种存储统计数据的方式,分别是永久性地存储统计数据和非永久性地存储统计数据,分别存储在磁盘和内存中。系统变量innodb_stats_persistent用来控制统计数据存储在哪里。值为OFF表示存储在内存,值为ON表示存储在磁盘。SHOWVARIABLESLIKE'innodb_stats_persi......
  • 关于高级定时器 重复计数值寄存器的使用介绍
    来源:https://www.cnblogs.com/liaigu/p/17782198.html在使用高级定时器进行初始化的时候,相较于通用定时器,在初始化的时候会有一个重复计数的配置,如下图:该位主要是对重复计数值寄存器进行配置,如下图:关于该配置的使用说明,具体如下:以定时器中断为例:1、一般默认情况下,将重复计......
  • 关于高级定时器 重复计数值寄存器的使用介绍
    在使用高级定时器进行初始化的时候,相较于通用定时器,在初始化的时候会有一个重复计数的配置,如下图:该位主要是对重复计数值寄存器进行配置,如下图:关于该配置的使用说明,具体如下:以定时器中断为例:1、一般默认情况下,将重复计数值设置为0。配置为向上计数时,当从0计数到arr值的时候......
  • Java并发工具类CountDownLatch(倒计数器)
    CountDownLatch,倒计数器,有两个常见的应用场景:场景1:协调子线程结束动作:等待所有子线程运行结束CountDownLatch允许一个或多个线程等待其他线程完成操作。例如,我们很多人喜欢玩的王者荣耀,开黑的时候,得等所有人都上线之后,才能开打。CountDownLatch模仿这个场景:创建大乔、兰陵王、安......