从 2024/5/4 往后开始记录捏。

T1.

给你一棵树,定义一个集合的权值为 \(\dfrac{\sum_{x\in S}V_x}{\sum_{x\in S}C_x}\)。若一个点 \(\in S\),则其父亲也必须 \(\in S\) 并且 \(|S| = k\)。求满足条件的所有集合的最大价值。\(n,k \le 2500\)。

Solution:

注意到那一个奇妙的式子和这个奇妙的条件,我们可以联想到 \(0/1\) 分数规划。不会的出门右转

我们定义 \(dp_{u,s}\) 为在 \(u\) 的子树下我们一共选择了整整 \(s\) 个点。

所以我们可以对于每一个儿子节点都举出他的子树中选择了多少个点然后对于所有情况取个 \(\max\) 即可的到 \(dp_{u,s}\)。然后我们在进行 \(0/1\) 分规即可。

T2.Sam数

我们定义 \(dp_{i,j}\) 为第 \(i\) 为是 \(j\) 的方案数。于是我们可以非常迅速的得到递推式,\(dp_{i,x} = \sum^{j + 2}_{x = j - 2} dp_{i - 1,x}\)。

但是这个算法的复杂度明显为 \(O(n)\),可以得到 \(30\) 分的高分。但是对于 \(n \le 10^{18}\),我们需要 \(O(\log n)\) 的写法。

对于这个式子,我们可以考虑使用矩阵快速幂进行优化。

矩阵非常好推,自己写。

T3.P3412

较为综合的好题。

我们发现题目等价于把 \(a\) 作为根,然后其余的节点到 \(a\) 的期望值之和。然后我们可以枚举每一个 \(a\) 进行计算。

我们定义 \(dp_u\) 为 \(u\) 子树内其所有的点到 \(u\) 的期望步数。如果这个点的所有子树都聚集到了这个点上,但是我们无法计算出这个点去到其父亲的期望步数。

于是我们再定义 \(g_u\) 为 \(u\) 节点到其父亲的期望步数。

然后我们考虑如何转移 \(g_u\)。

  1. \(u\) 直接走到了他的父亲。

  2. 他往下走了。

则有 \(g_u = \dfrac{1}{deg_u} + \sum_{v \in son_u} \dfrac{g_v + g_u + 1}{deg_u}\)。

所以 \(g_u \times deg_u = 1 + \sum_{v \in son_u}(g_v + g_u + 1) = deg_u + (deg_u - 1) \times g_u + \sum_{v \in son_u}g_v\)。

于是 \(g_u = deg_u + \sum_{v \in son_u}g_v\)。

然后我们来计算 \(dp_u\)。\(dp_u = \sum_{v \in son_u}dp_v + g_v \times siz_v\),这是显而易见的。

时间复杂度为 \(O(n^2)\)。

由于每一个节点均有可能作为根节点,所以我们考虑换根 \(dp\)。

假设 \(h_u\) 为以 \(u\) 为根节点,其他节点到这个点的期望步数之和。显然的答案为 \(\dfrac{\sum_{u = 1}^{u \le n} h_u}{n^2}\)。

按照正常的换根 \(dp\) 的转移方式转移即可。

所以可以得出 \(h_u = dp_u + h_{fa_u} - dp_u - siz_u \times g_u + (n - siz_u) \times (g_1 - g_n)\)。

特殊的 \(h_1 = f_1\)。

这样子我们就可以将这个题的复杂度化为 \(O(n)\) 了。

DP Record的更多相关文章

  1. 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...

  2. UVALive - 3942 Remember the Word[Trie DP]

    UVALive - 3942 Remember the Word Neal is very curious about combinatorial problems, and now here com ...

  3. 【UVA 1380】 A Scheduling Problem (树形DP)

    A Scheduling Problem   Description There is a set of jobs, say x1, x2,..., xn <tex2html_verbatim_ ...

  4. 【HDU 5370】 Tree Maker(卡特兰数+dp)

    Tree Maker Problem Description Tree Lover loves trees crazily. One day he invents an interesting gam ...

  5. LA 3942 Remember the Word(前缀树&树上DP)

    3942 - Remember the Word Neal is very curious about combinatorial problems, and now here comes a pro ...

  6. Day1:T3 bfs T4 树形DP

    T3:BFS 回看了一下Day1的T3...感觉裸裸的BFS,自己当时居然没有看出来... 同时用上升和下降两种状态bfs即可 这一题还要注意一个细节的地方,就是题目要求的是求往返的最优解 k=min ...

  7. [LeetCode] Student Attendance Record II 学生出勤记录之二

    Given a positive integer n, return the number of all possible attendance records with length n, whic ...

  8. dp方法论——由矩阵相乘问题学习dp解题思路

    前篇戳:dp入门——由分杆问题认识动态规划 导语 刷过一些算法题,就会十分珍惜“方法论”这种东西.Leetcode上只有题目.讨论和答案,没有方法论.往往答案看起来十分切中要害,但是从看题目到得到思路 ...

  9. 算法进阶面试题05——树形dp解决步骤、返回最大搜索二叉子树的大小、二叉树最远两节点的距离、晚会最大活跃度、手撕缓存结构LRU

    接着第四课的内容,加入部分第五课的内容,主要介绍树形dp和LRU 第一题: 给定一棵二叉树的头节点head,请返回最大搜索二叉子树的大小 二叉树的套路 统一处理逻辑:假设以每个节点为头的这棵树,他的最 ...

  10. HDU 4802 && HDU 4803 贪心,高精 && HDU 4804 轮廓线dp && HDU 4805 计算几何 && HDU 4811 (13南京区域赛现场赛 题目重演A,B,C,D,J)

    A.GPA(HDU4802): 给你一些字符串对应的权重,求加权平均,如果是N,P不计入统计 GPA Time Limit: 2000/1000 MS (Java/Others)    Memory ...

随机推荐

  1. 关于<property name="hibernate.hbm2ddl.auto"></property>中的参数填写

    hibernate的数据库表自动生成参数 关于<property name="hibernate.hbm2ddl.auto"></property>中的参数 ...

  2. 力扣586(MySQL)-订单最多的客户(简单)

    题目: 编写一个SQL查询,为下了 最多订单 的客户查找 customer_number . 测试用例生成后, 恰好有一个客户 比任何其他客户下了更多的订单. 查询结果格式如下所示. 进阶: 如果有多 ...

  3. 深度解读 MongoDB 最全面的增强版本 4.4 新特性

    MongoDB 在今年正式发布了新的 4.4 大版本,这次的发布包含众多的增强 Feature,可以称之为是一个维护性的版本,而且是一个用户期待已久的维护性版本,MongoDB 官方也把这次发布称为「 ...

  4. Java应用结构规范

    ​简介:在Java程序开发中,命名和应用分层无疑是广大后端同胞的两大"痛点",本文提供一种基于领域模型的轻量级应用分层结构设计,供大家参考.下面按分层结构.分层明细.调用关系.各层 ...

  5. 浅谈RSocket与响应式编程

    ​简介: RSocket是高效一个二进制的网络通讯协议,能够满足很多场景下使用.另外,RSocket也是一个激进的响应式捍卫者,激进到连API都跟响应式无缝集成.本文我们将和大家分享RSocket与响 ...

  6. DevOps 能力提升模型

    简介: DevOps 能力反映的是技术研发响应业务变化的能力.随着组织规模的增加和业务复杂性增长,DevOps 能力会变得越来越重要.持续提升 DevOps 的能力成为技术研发的共同挑战. 编者按:本 ...

  7. dotnet 6 命令行 cmd 设置输出英文解决中文乱码

    我遇到在部署 CI 服务器,执行 cmd 命令构建,输出的中文是乱码.我期望让 dotnet 命令行输出使用英文解决乱码问题.通过设置 dotnet 命令行的语言文化,即可解决此问题 给 dotnet ...

  8. log4j的配置详解

    参考文章:https://www.jianshu.com/p/ccafda45bcea 引入log4j: 在项目中单独使用log4j进行日志的输出: maven依赖: <dependency&g ...

  9. Django 自定义管理命令:从入门到高级

    title: Django 自定义管理命令:从入门到高级 date: 2024/5/16 18:34:29 updated: 2024/5/16 18:34:29 categories: 后端开发 t ...

  10. Java中CAS算法的集中体现:Atomic原子类库,你了解吗?

    一.写在开头 在前面的博文中我们学习了volatile关键字,知道了它可以保证有序性和可见性,但无法保障原子性,结局原子性问题推荐使用synchronized.Lock或者AtomicInteger: ...