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. 稳,从数据库连接池 testOnBorrow 看架构设计

    本文从 Commons DBCP testOnBorrow 的作用机制着手,管中窥豹,从一点去分析数据库连接池获取的过程以及架构分层设计. 以下内容会按照每层的作用,贯穿分析整个调用流程. 1️⃣框架 ...

  2. 数据结构课后题答案 - XDU_953

    参考书: 数据结构与算法分析(第二版) 作者:荣政 编 出版社:西安电子科技大学出版社 出版日期:2021年01月01日 答案解析:

  3. docker 安装redis 6.0.8哨兵集群(一主两从三哨兵)

    准备三台主机并且安装了docker 192.168.31.132 192.168.31.134 192.168.31.144 linux 版redis6.0.8 下载 下载地址:https://dow ...

  4. SaaS软件工程师成长路径

    背景 SaaS软件工程师的成长需要循序渐进,和SaaS业务一样有耐心.SaaS工程师需要在"业务"."技术"."管理"三个维度做好知识储备. ...

  5. 分享我的 Shell 环境,git 操作效率提升 100% !

    每当我换到一个新的开发环境,蛮多东西要折腾的.比如 git.golang.环境变量等等.所以特地整理了一下,下次换新电脑也方便. ​ 本文分享我在工作中常用的环境变量 + Shell alias:比如 ...

  6. OpenCV4之特征提取与对象检测

    1.图像特征概述 图像特征的定义与表示 图像特征表示是该图像唯一的表述,是图像的DNA 图像特征提取概述 传统图像特征提取 - 主要基于纹理.角点.颜色分布.梯度.边缘等 深度卷积神经网络特征提取 - ...

  7. npm 切换源

    切换到淘宝源 npm config set registry https://registry.npm.taobao.org 切换回官方源 npm config set registry http:/ ...

  8. Android 架构模式如何选择

    作者:vivo 互联网客户端团队-Xu Jie Android架构模式飞速演进,目前已经有MVC.MVP.MVVM.MVI.到底哪一个才是自己业务场景最需要的,不深入理解的话是无法进行选择的.这篇文章 ...

  9. Qt+GDAL开发笔记(二):在windows系统msvc207x64编译GDAL库、搭建开发环境和基础Demo

    前言   上一篇使用mingw32版本的gdal,过程曲折,为更好的更方便搭建环境,在windows上msvc方式对于库比较友好.   大地坐标简介 概述   大地坐标(Geodetic coordi ...

  10. Windows查找监听端口对应的进程及其路径

    前言 假设扫描到1234端口存在可疑进程,需要找到该监听端口对应的进程及其进程文件的全路径,判断是否为可疑程序. 步骤 启动命令行:按win + r键,然后输入"cmd" 查看端口 ...