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. PHP站群询盘订单提交过滤系统,2018年作品

    //作者主页: https://www.bz80.vip header("Content-type: text/html; charset=utf-8"); //UTF8编码,避免 ...

  2. javaSE 温故而知新

    重温 javaSE 前言:有地基才能有高楼大厦 目录 重温 javaSE 认识java Java基础 1.数据类型 1.1 基本数据类型: 1.2 引用数据类型 1.3 基本数据类型的包装类 1.4 ...

  3. JavaScript中this的绑定

    <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path s ...

  4. CentOS 8搭建Kubernetes-k8s集群-1.18.5

    目录 环境配置 服务器信息 软件版本 环境正确性 端口正常开放 kube-master节点端口 kube-node节点端口 配置主机互信 配置hosts映射 配置ssh密钥 禁用swap 关闭SELi ...

  5. 开源BaaS平台Supabase介绍

    Supabase 介绍 Supabase 是一个开源的 Firebase 替代品,以BaaS的形式向各种应用程序提供了一系列的后端功能,可以帮助开发者更快地构建产品. 对于想快速实现一个产品而言,如果 ...

  6. Flutter ncnn 使用

    Flutter 实现手机端 App,如果想利用 AI 模型添加新颖的功能,那么 ncnn 就是一种可考虑的手机端推理模型的框架. 本文即是 Flutter 上使用 ncnn 做模型推理的实践分享.有如 ...

  7. pandas 删除重复项

    使用如下函数: drop_duplicates 具体示例如下: import pandas as pd # 建立一个dataframe数据 df = pd.DataFrame({'k1':['one' ...

  8. WEB前端资源网站推荐

    https://www.bootcss.com/ https://www.bootcdn.cn/ http://www.jeasyui.net/plugins/756.html

  9. excel 启用迭代计算

    迭代,即计算程序中一组指令的重复.在Excel中有些公式需要启用迭代计算,才能正常运算. 注:公式直接或间接引用自身单元格,会导致计算结果不正确,可以尝试使用该方法解决.所愿单元格的初始值都为0. 参 ...

  10. Pytorch 最全入门介绍,Pytorch入门看这一篇就够了

    本文通过详细且实践性的方式介绍了 PyTorch 的使用,包括环境安装.基础知识.张量操作.自动求导机制.神经网络创建.数据处理.模型训练.测试以及模型的保存和加载. 1. Pytorch简介 在这一 ...