题目 输入格式 输入仅有一行,包含两个正整数 q, n,分别表示问题编号以及叶结点的个数. 输出格式 输出仅有一行,包含一个实数 d,四舍五入精确到小数点后 6 位.如果 q = 1,则 d 表示叶结点平均深度的数学期望值:如果 q = 2,则 d 表示树深度的数学期望值. 输入样例 1 4 输出样例 2.166667 提示 题解 第一问比较简单,我们设\(f[i]\)表示第\(i\)次扩展的期望深度 那么 \[f[i] = \frac{f[i - 1] * (i - 2) + (f[i - 1…
题面 luogu 题解 第一问: 设\(f[i]\)表示\(i\)步操作后,平均深度期望 \(f[i] = \frac {f[i - 1] * (i - 1)+f[i-1]+2}{i}=f[i-1]+\frac{2}{i}\) 第二问就比较难受了: \(E(x)=∑_{i=1}^{x}P\) 随机变量\(x\)的期望为对于所有\(i\),\(i≤x\)的概率之和 我们设\(f[i][j]\)表示\(i\)步后,树的深度\(>=j\)的概率 我们每次新建一个根,然后枚举左右子树分配节点情况 \(f…
题目:https://www.luogu.org/problemnew/show/P3830 询问1:f[x]表示有x个叶节点的树的叶节点平均深度: 可以把被扩展的点的深度看做 f[x-1] ,于是两个新点深度为 f[x-1]+1,而剩下的x-2个点平均深度就是f[x-1]: 所以f[x] = [ f[x-1] * (x-2) + (f[x-1] + 1) * 2 ] / x : 整理得到f[x] = f[x-1] + 2 / x : 询问2:f[i][j]表示有i个叶子节点.深度为j的概率:…
[BZOJ2830/洛谷3830]随机树(动态规划) 题面 洛谷 题解 先考虑第一问. 第一问的答案显然就是所有情况下所有点的深度的平均数. 考虑新加入的两个点,一定会删去某个叶子,然后新加入两个深度为原先叶子\(+1\)的点. 那么新加入的叶子的深度的期望是未加入之前的期望+1,假设\(f_i\)为\(i\)个点的期望. 那么\(f_i=(f_{i-1}*({i-1})-f_{i-1}+2*(f_{i-1}+1))/i=f_{i-1}+2/i\) 含义就是平均的深度乘上点的个数等于深度总和,减…
https://www.luogu.org/problemnew/show/P3830 具体方法见代码.. 其实挺神奇的,概率可以先算出“前缀和”(A小于等于xxx的概率),然后再“差分”得到A恰好为xxx的概率 话说推了很久“x个叶子节点的树,左子树有y个节点”的概率的dp,推不出来,然后无意间手玩了一下5个叶子节点,发现这个东西其实就等于1/(x-1),跟y没有关系... #include<cstdio> #include<algorithm> #include<cstr…
LINK:随机树 非常经典的期望dp. 考虑第一问:设f[i]表示前i个叶子节点的期望平均深度. 因为期望具有线性性 所以可以由每个叶子节点的期望平均深度得到总体的. \(f[i]=(f[i-1]\cdot (i-1)+(f[i-1]+1)\cdot 2-f[i-1])/i=f[i-1]+2/i\) 考虑第二问:可以设f[i][j]表示i个叶子节点树高恰好为j的概率. 转移即可 不过值得注意的是 P(i,k)有i个叶子k个被分给左子树的概率为1/(i-1) 这个可以通过计算得到.最终可以通过前缀…
传送门 我的floyd竟然写错了?今年NOIP怕不是要爆零了? 这就是一个概率dp 我们用$dp[i][j][k]$表示在第$i$个时间段,已经申请了$j$次,$k$表示本次换或不换,然后直接暴力转移 点数只有300,跑一遍floyd //minamoto #include<iostream> #include<cstdio> #include<cstring> #define inf 1e17 using namespace std; template<:;}…
作者:zifeiy 标签:概率DP 题目链接:https://www.luogu.org/problem/P2719 我们设 f[n][m] 用于表示还剩下n张A类票m张B类票时最后两张票相同的概率,则: 如果 \(n \le 1\) 且 \(m \le 1\) ,则 \(f[n][m] = 0\) (凑不齐两张一样的) 否则,如果 \(n == 0\) 或者 \(m == 0\),则 \(f[n][m] = 1\) (肯定是一样的两张票) 否则,\(f[n][m] = (f[n-1][m] +…
题意 初始 \(1\) 个节点,每次选定一个叶子节点并加入两个儿子直到叶子总数为 \(n\),问叶子节点深度和的平均值的期望以及最大叶子深度的期望. \(n\leq 100\) . 分析 对于第一问,根据答案定义状态 \(f_i\) 表示有 \(i\) 个叶子节点的深度和平均值的期望. 考虑对于之前的每一棵树对期望的贡献,记其发生的概率为 \(p\) ,深度和为 \(w\) ,有 \(i-1\) 个叶子节点.贡献为 \(p*\frac{w}{i-1}\) .现在要多选定一个叶子节点有 \(i-1…
传送门 树剖板子…… 一个路径加和,线段树上打标记.一个子树询问,dfs的时候记录一下子树的区间就行 // luogu-judger-enable-o2 //minamoto #include<bits/stdc++.h> #define ll long long using namespace std; #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)…
P3830 随机树 坑题,别人的题解我看了一个下午没一个看得懂的,我还是太弱了. 题目链接 P3830 [SHOI2012]随机树 题目描述 输入输出格式 输入格式: 输入仅有一行,包含两个正整数 q, n,分别表示问题编号以及叶结点的个数. 输出格式: 输出仅有一行,包含一个实数 d,四舍五入精确到小数点后 6 位.如果 q = 1,则 d 表示叶结点平均深度的数学期望值:如果 q = 2,则 d 表示树深度的数学期望值. 说明 第一问很水,考虑每次新拓展节点就是让树的总深度加上 2 也就是:…
[SHOI2012]随机树 题目大意( 网址戳我! ) 随机树是一颗完全二叉树,初始状态下只有一个节点. 随机树的生成如下:每次随机选择一个叶子节点,扩展出两个儿子. 现在给定一个正整数\(n\)(\(n \le 100\)) , 询问叶子节点个数为\(n\)的随机树: \(q = 1\) :叶子节点的平均深度 \(q = 2\) :整棵随机树的平均深度 样例:\(cin\ q\ n\ \ \ \ ;cin\ 1\ 4\ ,\ put\ 2.166667\ \ \ ;\ \ \ cin \ 2…
P3830 [SHOI2012]随机树 链接 分析: 第一问:f[i]表示有i个叶子结点的时候的平均深度,$f[i] = \frac{f[i - 1] + 2 + f[i - 1] * (i - 1)}{2} $,表示新增加一个叶子结点,深度增加2,加权后取平均值. 第二问:f[i][j]表示有i个叶子结点,树的深度大于等于j的概率,有$f[i][max(k, l)+ 1] = \frac{f[j][k] \times f[i - j][l]}{i - 1}$,$ans=\sum\limits_…
题目链接 bzoj2830: [Shoi2012]随机树 题解 q1好做 设f[n]为扩展n次后的平均深度 那么\(f[n] = \frac{f[n - 1] * (n - 1) + f[n - 1] + 2}{n}\) 化简之后也就是\(f[n] = f[n - 1] + \frac{2}{n}\) q2也好做 设f[i][j]表示扩展i次,树高为j的概率,对于左右儿子,子问题显然是一样的 枚举左右子树的i j 转移 \(f[i][std::max(l,k) + 1] += f[j][k] *…
洛谷 P3177 [HAOI2015]树上染色 树形DP 题目描述 有一棵点数为 \(n\) 的树,树边有边权.给你一个在 \(0 \sim n\)之内的正整数 \(k\) ,你要在这棵树中选择 \(k\) 个点,将其染成黑色,并将其他 的 \(n−k\) 个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的距离的和的受益.问受益最大值是多少. 输入格式 第一行包含两个整数 \(n,k\). 第二到 \(n\) 行每行三个正整数 \(fr,to,dis\)表示该树中存在一条…
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含三个整数N.M.P,分别表示该数列数字的个数.操作的总个数和模数. 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值. 接下来M行每行包含3或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数乘上k 操作2: 格式:…
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [SCOI2008]配对 感觉是道很好的推断题 贪心 想到贪心的结论就很容易,没想到就很难做出来了 结论:对\(A,B\)数组分别排序之后,在\(A\)中选第\(i\)个数,与之配对的数一定在\(B[i-1]\)~\(B[i+1]\)内 其实证明是很好证的,在与你是否往这方面想了... 因为题目有一个很…
洛谷 P4072 [SDOI2016]征途 斜率优化DP 题目描述 \(Pine\) 开始了从 \(S\) 地到 \(T\) 地的征途. 从\(S\)地到\(T\)地的路可以划分成 \(n\) 段,相邻两段路的分界点设有休息站. \(Pine\)计划用\(m\)天到达\(T\)地.除第\(m\)天外,每一天晚上\(Pine\)都必须在休息站过夜.所以,一段路必须在同一天中走完. \(Pine\)希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可能小. 帮助\(Pine\)求出…
洛谷题面传送门 SDOI 2017 R2 D1 T3,nb tea %%% 讲个笑话,最近我在学动态 dp,wjz 在学 FWT,而我们刚好在同一天做到了这道题,而这道题刚好又是 FWT+动态 dp 首先考虑怎样暴力计算答案,我们记 \(dp_{u,j}\) 表示以 \(u\) 为根的子树中有多少个连通块包含 \(u\) 且权值的异或和为 \(j\),初始 \(dp_{u,val_u}=1\),每次遍历 \(u\) 的一个子树 \(v\) 就对这个子树就对这两个子树的 \(dp\) 做一个合并,…
传送门:洛谷 题目大意:对于一个只有一个节点的二叉树,一次操作随机将这棵树的叶节点的下方增加两个节点.$n-1$次操作后变为$n$个叶节点的二叉树.求:(1)叶节点平均深度的期望值(2)树深度的数学期望值 数据范围:$2\leq n\leq 100$ 首先看第(1)问 设$f_i$为$i$个叶节点的二叉树的叶节点平均深度的期望值. 每次选择一个叶节点,扩展出两个新的叶节点,所以总的深度增加$f_{i-1}+2$ 则$f_i=\frac{(i-1)*f_{i-1}+f_{i-1}+2}{i}=f_…
洛谷题面传送门 神仙多项式+组合数学题,不过还是被我自己想出来了( 首先对于两棵树 \(E_1,E_2\) 而言,为它们填上 \(1\sim y\) 使其合法的方案数显然是 \(y\) 的 \(E_1\cap E_2\) 的连通块次方,又显然 \(E_1,E_2\) 的导出子图是一棵森林,因此 \(E_1\cap E_2\) 连通块个数就是 \(n-|E_1\cap E_2|\),因此我们要求的答案就是 \(\sum\limits_{E_1}\sum\limits_{E_2}y^{n-|E_1\…
题目链接:https://www.luogu.org/problemnew/show/P3655 不一定对,仅供参考,不喜勿喷,不喜勿喷. 先copy洛谷P3368 [模板]树状数组 2 题解里面一位大佬Lyp10000对差分数组的解释: 来介绍一下差分 设数组a[]={,,,,},那么差分数组b[]={,,,-,} 也就是说b[i]=a[i]-a[i-];(a[]=;),那么a[i]=b[]+....+b[i];(这个很好证的). 假如区间[,]都加上2的话 a数组变为a[]={,,,,},b…
To 洛谷.1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式: 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入样例#1: 4 4 5 9 4 输出样…
洛谷题目传送门 你谷无题解于是来补一发 随便百度题解,发现了不少诸如树剖\(log^3\)LCT\(log^2\)的可怕描述...... 于是来想想怎么利用题目的性质,把复杂度降下来. 首先,每个点的输出状态只有\(0/1\),于是每个点的总状态也非常有限,可以根据权值为\(1\)的儿子数量\(0-3\)分为四种,记为该点的点权. 我们都会模拟暴力过程--先改叶子节点(先默认为\(0\)改为\(1\)),如果它的父亲此时权值为\(1\)的儿子数量从原来小于\(0\)的变成大于\(0\)的,那么父…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2243 题目传送门 - 洛谷2486 题意概括 一棵树,共n个节点. 让你支持以下两种操作,共m次操作: 1. 区间染色:给定两个节点,让你给树中链接这两个节点的路径染色. 2. 区间询问:给定两个节点,让你求出连接这两个节点的路径的色段数.比如说"112221"就是3段,分别是"11" "222" "1" 一开始给出初始染色情…
To 洛谷.1063 能量项链 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记.因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量.如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m*r*n(M…
至于为啥把这三个题放到一起,大概是因为洛谷的试炼场吧,三道树的水题,首先要理解 先序中序后序遍历方法. fbi树由于数量小,在递归每个区间时,暴力跑一遍区间里的数,看看是否有0和1.至于递归的方法,二分递归就行. 新二叉树就是现根据题意建树,然后求先序遍历时看一下子节点不是‘*’不是才继续向下走 求先序遍历就是用地贵的方式实现,从后序遍历我们可以找出根节点,从中序遍历我们可以找到左右子树. /*FBI树*/ #include<cstdio> #include<cstring> #i…
题目传送门 MEG 题目描述 Byteotia has been eventually touched by globalisation, and so has Byteasar the Postman, who once roamedthe country lanes amidst sleepy hamlets and who now dashes down the motorways. But it is those strolls inthe days of yore that he re…
题面 Bzoj 洛谷 题解 首先把最短路径树建出来(用\(Dijkstra\),没试过\(SPFA\)\(\leftarrow\)它死了),然后问题就变成了一个关于深度的问题,可以用长链剖分做,所以我们用点分治来做(滑稽). 有一点要说,这一题数据比较水,如果不用字典序的话,也可以过.如何建立字典序呢?其实我们从\(1\)号节点开始遍历路径树(不是最短路径树),令一个点的第一关键字是点权,如果点权相等就按照编号大小为第二关键字,维护一个二元组就好了. 点分治时记两个数组\(S[i]\)和\(nu…
洛谷P1282 多米诺骨牌 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2.每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置. 编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小. 对于图中的例子,只要将最后一个多米诺骨牌旋转180°,可使上下2行点数之差为0. 输入输出格式 输入格式…