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

[THUPC 2025 决赛] Im Here

题目给了一刻编号为搜索序的树,我们形式化限制,考察方案序列:

  1. \(u\)\(v\) 的祖先,则 \(u\)\(v\) 后面。
  2. \(i\) 个点只能出现在 \([1,n-i+1]\) 这些位置中。

显然限制一是一个树上拓扑序计数的东西,我们设 \(g(i,j)\) 表示子树 \(i\) 中选 \(j\) 个的方案数可以 \(\mathcal{O}(n^2)\) 合并求得。现在重点考虑限制二,我们发现越往后限制越紧,编号越大限制越紧,于是我们可以发现后缀最大值的限制是更严格的,于是我们可以不用关心其它位置的第二个限制,这么做的好处是使得我们需要考虑的东西是单调的,有利于我们进行 dp。

如果从大到小考虑,那么能成为后缀最大值的数只能是考虑到他时放在最后一个的数。

我们不妨设 \(f(i,j,k)\) 表示填完了前 \(i\) 大的数,填了 \(j\) 个,当前最后一个数在位置 \(k\)。转移有三种,第一种是直接不选,只有 \(i=1\) 时无法转移。第二种是选并成为后缀最大值,此时位置可以是 \([k+1,n-i+1]\),显然它是能够满足限制一的。

第三种有点麻烦,因为我们发现如果不是后缀最大值就可能不满足限制一。但是由于 \(i\) 子树内所有结点编号是一段区间且 \(i\) 最小,而 \(i\) 不在最后一个则子树内都不可能成为后缀最大值,这是我们希望看到的,于是我们直接插入就好了,枚举选的个数 \(l\),那么有

\[f(i,j+l,k)\leftarrow f(i+size_i,j,k)\times g(i,l)\times\binom{k-j}{l} \]

于是做完了,时间复杂度 \(\mathcal{O}(n^4)\)

http://www.jsqmd.com/news/10715/

相关文章:

  • 下好多雨
  • 解码Linux基础命令
  • 戴尔电脑开机出现supportassist怎么办_戴尔电脑开机出现supportassist多种解决优秀的方法
  • 基于 C++ 的高雷诺数湍流直接数值模拟求解器设计与性能优化 - 实践
  • 项目经理常见面试题7:作为项目经理,你如何协调项目中不同角色(构建、测试、产品)的矛盾?
  • 由等概率(a,b)生成等概率(c,d)
  • 是时候使用NanoID取代UUID了
  • 经营分析会 - 智慧园区
  • 详细介绍:C#练习题——泛型实现单例模式和增删改查
  • Ivanti EPM移动版12.5.0.0身份验证绕过漏洞分析与利用
  • 自动评估问答模型的技术突破
  • task8.c
  • 运行Udacity的MPC控制项目指南(project_10)在Ubuntu 18.04环境下
  • 深入解析:Java 将 PDF 转换为 PDF/A:数字文档归档的基石
  • 入门正当时!MQTT协议轻量简洁,但应用绝不简单
  • MFC中开源布局库---ResizableLib - 教程
  • 英语阅读
  • JetBrains 官宣 DataGrip 数据库 IDE 现可免费用于非商业用途,适用于 2025.2.4 或更新版本
  • CF1832D2 Red-Blue Operations (Hard Version) 模拟赛题目分析
  • PostgreSQL pg_auto_failover 高可用 1:pg_auto_failover集群搭建
  • 详细介绍:cpolar让Nastool影音库随身而行,随时随地享受视听自由
  • 网络流最小割,无向图建图法,求最小割点转换求最小割边
  • 2025/10/9
  • 看论文随笔Incendio: Priority-Based Scheduling for Alleviating Cold Start in Serverless Computing
  • 深度学习概述 - -一叶知秋
  • C++新语法学习笔记(更新我不会写的新语法)
  • 烧录神器来了!量产工具使用教程,新手也能秒懂
  • 深入解析:C++基础(21)——内存管理
  • C#性能优化基础:内存诊断(dump)
  • 2025年企业级LLM内容安全防护指南:鉴冰AI FENCE流式网关技术深度解析