当前位置: 首页 > news >正文

Zhengrui #3346. DINO

被我暴力干过去了qwq。

你考虑一个事情,打开大样例,点击 .out 文件,发现几乎全是 \(0\),你想一想为什么,本质上是你的 \(mex\) 每增加 \(1\),你的点的数量就会至少翻一倍,也就是说,答案最多是 \(O(\log n)\) 级别的。

此时考虑直接设 \(f_{i, j}\) 为以 \(i\) 为根的子树进行完操作后有多少种满足 \(a_i = j\) 的,但是你发现这个转移不太好转。

没关系,先想暴力转移是,状压 DP,每次设一个 \(g_s\) 表示我的值的所用情况为 \(s\) 的方案数,然后你惊奇的发现这个 \(2^{ans}\) 正好和 \(O(\log n)\) 抵消掉了,所以答案就是 \(O(n^2 \log n)\) 的了(\(O(\log n)\) 是转移内部时间复杂度)。

然后此时加个只有一个儿子的特判,你就能通过此题了。


当然,还是要说明一下本题的正解。

考虑让重儿子单独合并,轻儿子按照我们上面的那个做法做,发现此时每做一次的时间复杂度为轻儿子的子树大小,由于一个点至多跳 \(O(\log n)\) 次,所以复杂度被优化到了 \(O(n \log^2 n)\)

其实本质上就是类似折半合并的过程可以减少复杂度一样。

http://www.gsyq.cn/news/21816.html

相关文章:

  • Pytorch深度学习训练
  • P11894 「LAOI-9」Update
  • win10软实时设置 - 教程
  • 实用指南:Hunyuan3D-Omni:可控3D资产生成的统一框架
  • ZR 2025 NOIP 二十连测 Day 3
  • P66实训题
  • 非主流网站程序IndexNow添加方法
  • 卷积神经网络视频读书报告
  • 以*this返回局部对象的两种情况
  • 2025.10.15
  • Kali 自定义ISO镜像
  • pytorch实训题
  • 【Azure App Service】App Service是否支持PHP的版本选择呢?
  • Markdown转换为Word:Pandoc模板使用指南 - 实践
  • 复习CSharp
  • C语言学习——运算符的学习
  • 实用指南:NXP - 用MCUXpresso IDE v25.6.136的工具链编译Smoothieware固件工程
  • cifar10
  • 感知节点@4@ ESP32+arduino+ 第二个程序 LED灯显示
  • WebGL学习及项目实战(第02期:绘制一个点)
  • display ip routing-table protocol ospf 概念及题目 - 详解
  • C语言学习——小数数据类型
  • 高敏感人应对焦虑
  • 2025 年执业兽医资格证备考服务机构推荐榜,执业兽医资格证培训机构/执兽考试机构/考试辅导机构获得行业推荐
  • [LangChain] 基本介绍
  • Palantir 的“本体工程”的核心思路、技术架构与实践示例
  • P14164 [ICPC 2022 Nanjing R] 命题作文
  • display ospf peer brief 概念及题目 - 实践
  • 记录一次客户现场环境,银河麒麟V10操作系统重启后,进入登录页面后卡死,鼠标键盘无响应的解决过程
  • ManySpeech.AliParaformerAsr 使用指南