尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

dp problems

dp problems
📅 发布时间:2026/6/20 3:59:54
太厉害了

相关的算法可以看 dp tricks 那篇文章,这篇文章主要写题,并且记录一些常见的以我目前水平难以归类的东西。

[BJ United Round #3] 三色树

改编自 ProjectEuler #677。

请你对满足以下要求的 \(n\) 个节点的 无标号无根树 计数:

  • 每个节点是三种颜色之一:红,蓝,黄
  • 红色节点度数不超过 \(4\),蓝色和黄色节点度数均不超过 \(3\)
  • 黄色节点不能相邻

注意 无标号无根树 的意义是:如果两颗树可以通过重新编号的方法使得对应点颜色相同,对应连边一致,则认为是同一颗树。

答案对输入的质数 \(p\) 取模。 \(n\leq 3000,9\times 10^8\leq p\leq 1.01\times 10^9\)

考虑无标号有根树怎么做。因为无编号,所以我只关心子树的大小。设 \(f(i,0/1/2)\) 表示大小为 i 的子树,根节点的颜色是红、黄、蓝,并且根节点会有父亲的方案数,为了满足度数的限制需要记 \(g(i,j)\) 表示 i 棵树总大小为 j 的方案数,为了满足黄点还要记 \(h(i,j)\) 表示 i 棵树总大小为 j 并且根节点都不是黄点的方案数。对于 f,有转移 \(f(i,0)=\sum_{j=0}^3 g(j,i-1),f(i,1)=\sum_{j=0}^2 g(j,i-1),f(i,2)=\sum_{j=1}^2h(j,i-1)\)。考虑 g 和 h 的转移。你考虑转移 \(f(i)\) 相当于是让森林多了许多大小为 \(i\) 的子树,所以 \(g\) 和 \(h\) 的转移也要跟 \(i,j\) 有关系。枚举我们往森林里面扔了多少颗大小为 \(i\) 的子树,转移系数相当于从 \(f(i,0)+f(i,1)+f(i,2)\) 中选出 \(k\) 种的方案数,这个方案数我们知道就是 \(\binom{k+f(i,0)+f(i,1)+f(i,2)-1}{k}\),有转移 \(g(x,y)=\sum_{k}g(x-k,y-ki)\binom{k+f(i,0)+f(i,1)+f(i,2)-1}{k}\);对于 \(h\) 的转移只需要把 \(f(i,2)\) 改掉,也就是 \(h(x,y)=\sum_{k}h(x-k,y-ki)\binom{k+f(i,0)+f(i,1)-1}{k}\),这样做就是 \(O(n^2)\) 的。

然后考虑无标号无根树怎么做。这里我们钦定树的重心为根,重心的每个儿子大小都不会超过 \(\lfloor\frac{n}{2}\rfloor\),根据这个性质我们用重心代表这棵树的结构,dp 的时候转移只做到 \(\lfloor\frac{n}{2}\rfloor\) 然后让后面的直接继承即可。然后枚举中心的颜色和度数,如果重心是红点那么答案就是 \(\sum_{i=0}^4 g(i,n-1)\),如果重心是蓝点那么答案就是 \(\sum_{i=0}^3 g(i,n-1)\),重心是黄点那么答案就是 \(\sum_{i=0}^3 h(i,n-1)\)。但是你发现这样样例是过不了的,因为一棵树大小为偶数的时候可能会有两个重心,会算重。根据重心的性质,另一个重心一定和当前的重心有一条边直接相连,相当于这条边将整棵树分成了两个大小为 \(t=\frac{n}{2}\) 的树,我们就考虑这两棵树。假设其中的树根没有黄色,那么答案就是 \(\binom{f(t,0)+f(t,1)}{2}\),如果存在一个黄色节点那么答案就是 \(f(t,2)(f(t,1)+f(t,0))\),把这两种方案数的和减去就是答案了。时间复杂度 \(O(n^2)\)。

但是上面一部分对于 EI 来说太简单了,他一笔就带过了。然后他提出了 \(O(n\log n)\) 的做法,但是我不会 Polya 技术定理。How EI's Brain works?

相关新闻

  • 2025年栏杆制作厂家综合实力排行榜:专业视角下的五大优选厂商
  • uniapp开发抖音小程序避坑指南
  • Windows安装MySQL,无服务模式,随用随有,一键初始化,可替换phpstudy_pro

最新新闻

  • 电商平台XSS攻击实战防御:从前端到后端的双重安全防线
  • 合肥口碑最好的中专选哪家?综合实力优选合肥理工学校! - 教育为先
  • 大众app抓包分析(cip)
  • Python 潮流周刊#155:Python 3.14 垃圾回收风波
  • 如何在5分钟内免费解锁Microsoft 365完整功能:终极激活指南
  • Wireshark中HTTPS证书分析与导出:从原理到实战的完整指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号