info: { blogIcon: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogUser: 'OIerBoy', blogAvatar: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogStartDate: '2023-04-22', webpageTitleOnblur: '(o?v?)ノ Hi', webpageTitleOnblurTimeOut: 1000, webpageTitleFocus: '(*′?`*) 欢迎回来!', webpageTitleFocusTimeOut: 1000, webpageIcon: "https://cdn.jsdelivr.net/gh/BNDong/Cnblogs-Theme-SimpleMemory@master/img/webp/blog_logo.webp", { enable: true, // 是否开启日/夜间模式切换按钮 auto: { // 自动切换相关配置 enable: false, // 开启自动切换 dayHour: 5, // 日间模式开始时间,整数型,24小时制 nightHour: 19 // 夜间模式开始时间,整数型,24小时制 } } },

[abc321E]Complete Binary Tree

2023-09-23

题目

题目传送门

翻译

翻译

难度&重要性(1~10):6

题目来源

AtCoder

题目算法

模拟

解题思路

考场没调出来,考完赶紧写发题解祭奠一下。

这道题主要就是模拟,细节比较多。

思路就是一层一层的计算贡献:

如图,我们首先计算出以结点 \(x\) 为根的子树第 \(k\) 层的结点数,再计算结点 \(x\) 的父节点的另一个子节点的 \(k-1\) 层的结点数,以此类推,直到 \(k=1\)

思路就是这样,但是有很多的小细节,例如:

  • 在计算子树第 \(i\) 层的结点数时要判断是否存在这一层以及这一层是否是满的

  • \(k=1\) 时,需要判断当前是否时根节点,即当前 \(x\) 是否为 \(1\),如果是则无贡献

完成状态

已完成

posted @ 2023-09-24 17:28  OIerBoy  阅读(18)  评论(0)    收藏  举报