T1

大水题,用位运算更加便捷求解。

T2

看出来有环了,但是没往基环树上想,寄。

暴力分,有部分分是基础树,可以跑一遍深搜,根节点的选择是 k 种颜色,剩下的是 k - 1 种颜色。还有暴力是可以二分图染色做出来的。

正解,我们对于一个环上的操作,可以用递推式子求出来。f[0][i], f[1][i] 分别表示和第一种的颜色不一样、一样。对于不一样的我们在转移的时候是 $ f[0][i] \gets f[1][i-1] * (k - 1) + f[0][i-1] * (k - 2)$,不同色的时候 \(f[1][i] \gets f[0][i-1]\)。完成了环上的递推。

一般的基环树,我们还会有很多的出边,对于出边我们可以把他们看成一棵一棵的树。我们可以用拓扑排序把这些出边给砍掉。

从本质上来说,这个题目是一个树形结构,并不是基环树dp。以后多注意这种相互依赖的关系,可能就会出现基环树的形式,然后将基环树砍开来看是不是能分解成两部分分别计算。

少生孩子多取模

T3

很像提高组之前的一个题 mayan 游戏,代码都很长很臭,让人不想写事实也确实是这样,考场上写出来但是不想调不想再看了所以给删了重新写了个小暴力。

T4

暴力分考虑

考虑出来链的情况:

首先考虑链的情况,如果它是一根链的话,每个边之间的概率都是独立的,链之间的转移就是将每一根上的概率乘起来 dp[i][j] 前 i 个点,目前长度为 j。

枚举这个边的长度,$dp[i+1][j+k] \gets dp[i+1][j+k] + dp[i][j] * 1 / p $

题目中的最长距离就是一条树的直径,因此我们考虑树的直径的形成过程,是由两个子树中最大的两个链组合而成,所以我们可以枚举一个从根节点的最长链,然后我们再考虑另外的子树中的最长的一根链。之后枚举根节点到这个链的距离,然后用之前的链的情况进行合并。

//dp[x][j]表示x这个子树前面的儿子中,最远距离为j的概率
//tmp0[k]表示x向当前儿子y最远距离为k的概率
//tmp1为新的最远距离的概率
for(int j=0;j<=L;j++)
for(int k=0;k+j<=S;k++)
tmp0[j+k]+=p*dp[y][k];
for(int j=0;j<=S;j++)
for(int k=0;k+j<=S;k++)
tmp1[max(j,k)]+=dp[x][j]*tmp0[k];
for(int j=0;j<=S;j++)dp[x][j]=tmp1[j];

但是时间复杂度会被卡掉,所以说我们还要进行优化。

我们看到中间的这两层循环,本质是在不断枚举,是当前这一棵子树中产生了最长链,还是在前面的分支中,所以说我们可以给它们用前缀和统计出来,之后减去二者相等的情况。sum[0][i] 表示在前面的分支中出现了链最长, sum[1][i] 表示在当前的这个链上的长度是最大的。

随机推荐

  1. 基于OLAP技术的企业级大数据分析平台的国际化发展与合作

    目录 标题:<基于OLAP技术的企业级大数据分析平台的国际化发展与合作> 背景介绍 随着全球化的不断推进,企业对大数据分析的需求日益增长.企业通过数据分析来发现隐藏在业务数据中的机会,从而 ...

  2. 基于JavaFX的扫雷游戏实现(二)——游戏界面

      废话环节:看过上期文章的小伙伴现在可能还是一头雾水,怎么就完成了核心内容,界面呢?哎我说别急让我先急,博主这不夜以继日地肝出了界面部分嘛.还是老规矩,不会把所有地方都照顾到,只挑一些有代表性的内容 ...

  3. 手把手教你自定义自己SpringBoot Starter组件源码剖析

    我们知道SpringBoot Starter也就是启动器.是SpringBoot组件化的一大优点.基于这个思想,基于这个思想SpringBoot 才变得非常强大,官方给我们提供很多开箱即用的启动器. ...

  4. MySQL数据库的集群方案

    读写分离结构(主从) 读多写少,也就是对数据库读取数据的压力比较大. 其中一个是主库,负责写入数据,成为写库:其他都是从库,负责读取数据,成为读库. 对我们的要求: 读库和写库的数据一致: 写数据必须 ...

  5. 音视频开发进阶|第四讲:音频自动增益控制 AGC

    在之前的文章中,我们已经接触了两个重要的音频前处理模块 – 回声消除 AEC 和噪声抑制 ANS,它们分别解决了 RTC 场景下的回声.噪声问题,极大提升了用户的体验.至此,音频前处理三剑客中,就只剩 ...

  6. 如何将Maven项目快速改造成一个java web项目(方式一)

    因为实际需要,需要将一个maven项目改造成原生的java-web项目,写这边博客 来记录整个改造的过程.原始的maven项目,使用IDEA打开后,目录结构如下所示 直接通过文件夹查看项目结果如下 首 ...

  7. Seal AppManager如何基于Terraform简化基础设施管理

    作者简介 陈灿,数澈软件Seal 后端研发工程师,曾在腾讯负责敏捷研发体系建设以及 DevOps 解决方案的敏捷实践.在敏捷研发和产品效能提升有着丰富的经验,致力于构建一站式研发友好的平台工程解决方案 ...

  8. Go 匿名返回值的坑——这道题据说 90% 的同学都答错了!

    今天分享的内容比较基础,准确地说是 Go 的语言特性--命名.匿名返回值. 先看下面的例子,猜测会输出什么? package main func main() { println(A()) print ...

  9. 【最新】Delphi XE7 绿色版下载,亲测可用!

    最后更新时间 2017-12-05. 本文整理自2ccc盒子iny的帖子 → 链接到原贴 破解 → 链接 一.绿色版介绍 绿色版除了不包含 FastReport(RAD Studio自带的FastRe ...

  10. DDD项目落地之充血模型实践

    背景: 充血模型是DDD分层架构中实体设计的一种方案,可以使关注点聚焦于业务实现,可有效提升开发效率.提升可维护性: 1.DDD项目落地整体调用关系 调用关系图中的Entity为实体,从进入领域服务( ...