这两场考试大部分的题都考过,然鹅有的 \(trick\) 忘了,有的当时咕了(虽然现在还咕着)

首先是 \(v\) 这道题需要加一个小优化,对于较小的状态应该直接用数组记录,较大的再用 map 记

然后就是这个神奇的 \(dp\) 题:


A. 玩具

考场上只会暴搜,胡了一个 hash 还给挂了

正解是神奇的 \(dp\)

首先核心是 \(f[i][j]\) 表示 \(i\) 个点的树深度为 \(j\) 的概率,那么期望即概率乘深度之和

考虑这个怎么转移:

如果想办法从 \(f[i-1][k]\) 转移,可以发现这个状态是不完备的,因为不知道 \(i-1\) 个点深度为 \(k\) 时各个深度的点各有多少个,那么加在每个深度的概率是不相同的

那么考虑这棵树最后加入的点是树顶那个点

因为树顶那个点加入前整个的深度是固定的为 \(j-1\)

那么问题又来了,如果加入的是树顶,那么原来所有的子树将形成一个森林,显然还需要一个变量维护森林的状态

那么设 \(g[i][j]\) 表示 \(i\) 个点的森林深度为 \(j\) 的概率,那么有

\[f[i][j]=g[i-1][j-1]
\]

接着考虑 \(g\) 的转移,可以想到从一部点形成的树外加另外的点形成森林来转移

假设树的大小为 \(k\),那么一部分是 \(f[i][k]\),发现另一部分的深度是不确定的,只要小于等于 \(j\) 即可

说明状态设计的有问题,那么设计成深度小于等于 \(j\) 就好了

\(f\) 的转移还是一样的

然后再看 \(g\) 的转移,发现还是有 \(bug\),因为总共有 \(j\) 个点,有 \(k\) 个点在第一棵树里,这是有概率的,那么继续打补丁——设 \(dp[i][j]\) 表示 \(i\) 个点的森林有 \(j\) 个点在第一棵树的概率

考虑转移,从 \(dp[i-1][]\) 转移而来,分为新加的点在不在第一棵树里两种情况,方程式为:

\[dp[i][j]=dp[i-1][j-1] * \frac{j-1}{i}+dp[i-1][j] * \frac{i-j}{i}
\]

这里需要注意看似上一种情况共可以向 \(i-1\) 个点连边,为什么分母上是 \(i\) 呢?

因为漏掉了一种情况就是新加的这个点其实是可以自成一棵树的,所以没有问题

这回终于可以转移 \(g\) 了:

\[g[i][j]=\sum_{k=1}^{i} f[i][k]*g[i][i-k]*dp[i][k]
\]

最后是统计答案,由于状态设计的是前缀和形式,那么答案需要减一下,即:

\[\sum_{i=1}^{n} (f[n][i]-f[n][i-1])*i
\]

noip模拟19/20的更多相关文章

  1. Noip模拟19(炸裂的开始) 2021.7.18

    T1 u 差分与前缀的综合练习. 分析数据范围,只能是在修改的时候$O(1)$做到,那么只能是像打标记一样处理那个三角形 正解是建立两个二位前缀和,一个控制竖向,一个控制斜向 每次在三角的左上,右下, ...

  2. NOIP模拟 19

    最近试考的脑壳疼 晚上还有一场555 T1 count 研究性质题. 研究好了AC,研究不明白就没头绪 首先枚举n的因子d 其次发现因为是树,所以如果合法,贡献只能是1 然后发现如果合法,一定是一棵一 ...

  3. [考试总结]noip模拟19

    连挂3场 \(\color{green}{\huge{\text{菜}}}\) 真 . 挂分王 ... 没什么好说的了,菜就是了. \(T1\) 一波手推想到了性质 \(1\),然后因为数组原因挂成比 ...

  4. noip模拟测试20

    考试总结:这次考试,我非常真实地感觉到了自己能力的提高,具体来说,在之前的考试中,读完题之后我只会想到暴力的思路,甚至有的题连暴力都打不出来,但是这次在考场上我已经有了自己的一些想法,有了一个深入思考 ...

  5. 2018/3/18 noip模拟赛 20分

    T1 dp,特别裸特别简单,我放弃了写了个dfs. T2 树归,特别裸特别简单,我不会写. T3 贪心二分不知道什么玩意儿反正不会写就对了. 我是个智障

  6. NOIP 模拟19

    考试状态一次不如一次,所以这次.......我经无言以对 考完试T1就A了,但不是考试时A的,所以屁用没有! 这次考试其实T1想的是正解但是自己傻逼了,感觉自己只能拿部分分,(而且我还把数据范围少看一 ...

  7. NOIP模拟测试20「周·任·飞」

    liu_runda出的题再次$\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%$ 任 题解 题目中为什么反复强调简单路径,没有环 没有环的图中点数-边数=联通块数 前缀和维护边 ...

  8. 8.3考试总结(NOIP模拟19)[最长不下降子序列·完全背包问题·最近公共祖先]

    一定要保护自己的梦想,即使牺牲一切. 前言 把人给考没了... 看出来 T1 是一个周期性的东西了,先是打了一个暴力,想着打完 T2 T3 暴力就回来打.. 然后,就看着 T2 上头了,后来发现是看错 ...

  9. NOIP 模拟 $19\; \rm w$

    题解 \(by\;zj\varphi\) 树形 \(dp\) 题目 有一个结论:对于一个图,有多少奇度数的点,处以二就是答案,奇度数指的是和它相连的边中被反转的是奇数 证明很好证 那么设 \(dp_{ ...

随机推荐

  1. java获取日出日落时间

    import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

  2. jdk的下载与安装教程

    最近在学逆向,就是要反编译人家的java代码,在这之前要先安装环境,下面是下载和安装JDK的教程: 1.JDK下载地址: http://www.oracle.com/technetwork/java/ ...

  3. 电脑常用快捷键及常用的DOS命令

    电脑常用快捷键 Ctrl+C:复制 Ctrl+V:粘贴 Ctrl+A:全选 Ctrl+X:剪切 Ctrl+Z:撤销 Ctrl+S:保存 Alt+F4:关闭窗口 Shift+delete:永久删除 Wi ...

  4. 作为Java开发工程师,如何高效优雅地编写接口文档

    作为一名优秀的Java开发工程师,编写接口文档向来是一件很头疼的事情.本来就被bug纠缠的很累了,你还让我干这? 其实,你可以试试ApiPost. ApiPost的定位是Postman+Swagger ...

  5. CTF_论剑场_Web20

    直接上脚本,多跑几次就能出flag import requests import re url = "http://123.206.31.85:10020/" s = reques ...

  6. 关于Linux下Texlive无法找到已安装字体的问题与解决

    关于Linux下Texlive无法找到已安装字体的问题与解决 当我在Ubuntu系统下使用Latex时,在编译渲染时报出了Font "xxx" does not contain r ...

  7. JavaScript学习04(标准对象)

    标准对象 在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用 typeof 操作符获取对象的类型,它总是返回一个字符串: typeof 12 ...

  8. MySQL慢查询及开启慢查询

    一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态 slow_ ...

  9. linux service脚本

    vim /etc/systemd/system/node_exporter.service [Unit] Description=node_exporter Documentation=https:/ ...

  10. 设计模式:单例模式的使用和实现(JAVA)

    单例模式的使用 jdk和Spring都有实现单例模式,这里举的例子是JDK中Runtime这个类 Runtime的使用 通过Runtime类可以获取JVM堆内存的信息,还可以调用它的方法进行GC. p ...