【xsy1130】tree 树形dp+期望dp】的更多相关文章

Problem Puzzles 题目大意 给一棵树,dfs时随机等概率选择走子树,求期望时间戳. Solution 一个非常简单的树形dp?期望dp.推导出来转移式就非常简单了. 在经过分析以后,我们发现期望时间戳其实只需要考虑自己父亲下来(步数加一)&从兄弟回来两种可能. 设size[i]为i节点子树大小(包括自身) 对于兄弟的情况,i节点的一个兄弟有1/2的可能已经被遍历完毕了,也就是步数加size该兄弟. 于是设ans[i]为到达i点的期望值,则 ans[i]=ans[Father i]+…
表示对概率和期望还不是很清楚定义. 目前暂时只知道概率正推,期望逆推,然后概率*某个数值=期望. 为什么期望是逆推的,例如你求到某一个点的概率我们可以求得,然后我们只要运用dp从1~n每次都加下去就好了,这样求出来的就是最后的概率.那么期望呢,就是这个概率*数值就行了.但是有时候这么绕来绕去太麻烦了,我们干脆就逆过来.然后我们发现,根据期望的定义,逆过来以后反正做结果并没有太大的改变,dp从n~1就可以了,并且每次都加上数值,然后在for的途中,这个数值是会不断的乘以概率的,所以期望适合用逆推的…
题意:给n(n<=15)种宝物宝物有价值w且每个宝物有一个前置宝物(即你必须先吃过它的所有前置宝物至少一次才能吃该宝物),共有m轮游戏,每一轮会在n种宝物等概率选一个出来,因为宝物价值可正可负你可以选择吃掉或者不吃,问m轮后你能获得的最大价值. 解法:这道题挺有意思的.看到n<=15容易想到用状压DP,于是我的第一想法是因为 但是此题起点是一定的但是终点不一定,所以从终点往回推可能会简单一些,于是设dp[x][S]代表1~x-1轮的状态为S,x~m轮的最大期望为dp[x][S] .一定要重点注…
题目写得不清不楚的... 题目大意:给你一棵$n$个节点的树,你会随机选择其中一个点作为根,随后随机每个点深度遍历其孩子的顺序. 下面给你一个点集$S$,问你遍历完$S$中所有点的期望时间,点集S中的点可能会重复. 数据范围:$n≤10^5$ 我们考虑钦定根,然后暴力$dp$. 设$s[u]$表示遍历以$u$为根的子树的耗时. 设$f[u]$表示开始遍历子树$u$,且最后遍历在子树$u$中结束的期望耗时. 不难发现,$s[u]=2\times siz[u]-2$,其中$siz[u]$为以$u$为…
题目链接 BZOJ2878 题解 除了实现起来比较长,思维难度还是挺小的 观察数据范围发现环长不超过\(20\),而我们去掉环上任何一个点就可以形成森林 于是乎我们枚举断掉的点,然后只需求出剩余每个点为根的答案 设\(f[i]\)表示从\(i\)出发等概率走向子树的期望步数 如果\(i\)为根就是我们所需的答案 首先求出\(f[i]\),然后用换根法扫一遍便求出每个点为根的答案 对于我们枚举的环上的点\(u\),答案自然就是 \[\sum\limits_{(u,v) \in E} \frac{f…
分析 考虑状压DP,令\(f[sta]\)表示已匹配状态是\(sta\)(\(0\)代表已匹配)时完美匹配的期望数量,显然\(f[0]=1\). 一条边出现了不代表它一定在完美匹配内,这也导致很难去直接利用题目中的边组来解决问题. 对于第二类边组,如果把两条边分开考虑(可以理解为把一个第二类的边组看成两个第一类的边组).如果只有一条边出现在了完美匹配中,此时的贡献是\(50\%\),显然是正确的.如果两条边都出现在了完美匹配中,此时的贡献是\(50\% \times 50\% = 25\%\),…
Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝物一共有n种,系统每次抛出这n种宝物的概率都相同且相互独立.也就是说,即使前k-1次系统都抛出宝物1( 这种情况是有可能出现的,尽管概率非常小),第k次抛出各个宝物的概率依然均为1/n. 获取第i种宝物将得到Pi 分,但并不是每种宝物都是可以随意获取的.第i种宝物有一个前提…
这个题的n<15,一看就是状压dp.但是状态不是很好想.f[][]存i关的状态j. 这个题另一个关键思想在于倒推,我一开始想的是正推,但是只能记忆化了. 题干: 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝物一共有n种,系统每次抛出这n种宝物的概率都相同且相互独立.也就是说,即使前k-1次系统都抛出宝物1( 这种情况是有可能出现的…
题目大意:甲和乙玩游戏,甲给出n(n<=50)个等长的字符串(len<=20),然后甲选出其中一个字符串,乙随机询问该字符串某一位的字符(不会重复询问一个位置),求乙能确定该串是哪个字符串的询问次数的期望值 这题不看题解好难想......(感谢zhx和zhx两位大佬的题解) len很小,考虑状压DP,显然我们要状压询问,要定义两个状态,f[]和num[] 1表示询问,0表示未询问 那么,我们定义f[s]表示询问状态s距离确定一个字符串所需要的期望值. 定义tot是s状态剩余的询问的次数,那么显…
ZOJ - 3777 就是一个入门状压dp期望 dp[i][j] 当前状态为i,分数为j时的情况数然后看代码 有注释 #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <cctype> #include <set> #include <vector> #inclu…