题目链接

BZOJ3244

题解

不会做orz

我们要挖掘出\(bfs\)序和\(dfs\)序的性质
①容易知道\(bfs\)序一定是一层一层的,如果我们能确定在\(bfs\)序中各层的断点,就能确定深度
②由于\(bfs\)序和\(dfs\)序儿子遍历顺序是一样的,所以\(bfs\)序同一层的点,在\(dfs\)序中顺序也一样,如果存在\(u,v\)在\(bfs\)中相邻,而在\(dfs\)序中逆序,那么\(u,v\)之间一定有断点
③\(dfs\)序中相邻的两个点\(u,v\)之间\(v\)要么为\(u\)的儿子,要么为\(u\)某个祖先的儿子,若\(v\)的\(bfs\)序大于\(u\)的,那么它们之间之多存在一个断点
④在③中确定的限制区间内,如果包含②中确定的断点,那么就可以确定其余点一定不分层。否则区间内点的顺序一定与\(dfs\)序一样,由于区间端点\(dfs\)序中相邻,所以这个区间只可能限制了一个断点

综上:
①若\(bfs\)序中相邻的在\(dfs\)序中逆序,必有断点
②\(dfs\)序中相邻的在\(bfs\)序中正序,之间最多一个断点,要么已确定期望\(1\)个,要么就只有一个不确定,期望\(0.5\)个
③\(1\)只有必有断点

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
#define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt)
#define REP(i,n) for (int i = 1; i <= (n); i++)
#define mp(a,b) make_pair<int,int>(a,b)
#define cls(s) memset(s,0,sizeof(s))
#define cp pair<int,int>
#define LL long long int
using namespace std;
const int maxn = 200005,maxm = 100005,INF = 1000000000;
inline int read(){int out = 0,flag = 1; char c = getchar();while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();}while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();}return out * flag;
}
int dfs[maxn],bfs[maxn],pos[maxn],id[maxn],x[maxn],sum[maxn],D[maxn],n;
int main(){n = read();REP(i,n) dfs[i] = read();REP(i,n) bfs[i] = read(),id[bfs[i]] = i;REP(i,n) dfs[i] = id[dfs[i]],pos[dfs[i]] = i;x[1] = 1;for (int i = 2; i < n; i++)if (pos[i] > pos[i + 1]) x[i] = 1;for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + x[i];for (int i = 1; i < n; i++)if (dfs[i] < dfs[i + 1]){if (sum[dfs[i + 1] - 1] - sum[dfs[i] - 1]){D[dfs[i]]++;D[dfs[i + 1]]--;}}int tot = 0;for (int i = 1; i < n; i++){tot += D[i];if (!x[i] && tot) x[i] = 2;}double ans = 1.0;for (int i = 1; i < n; i++){if (x[i] == 1) ans += 1.0;else if (!x[i]) ans += 0.5;}printf("%.3lf\n%.3lf\n%.3lf\n",ans - 0.001,ans,ans + 0.001);return 0;
}

转载于:https://www.cnblogs.com/Mychael/p/9044077.html

BZOJ3244 [Noi2013]树的计数 【数学期望 + 树遍历】相关推荐

  1. UOJ#351-新年的叶子【树的直径,数学期望】

    正题 题目链接:https://uoj.ac/problem/351 题目大意 给出nnn个点的一棵树,开始所有点都是白色,每次随机点黑一个叶子(可以重复点),求期望多少次能使得白色点构成的图直径发生 ...

  2. P6834-[Cnoi2020]梦原【数学期望,树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P6834?contestId=34123 题目大意 nnn个点,每个点i(i≠1)i(i\neq 1)i(i​=1 ...

  3. bzoj 1211 [HNOI2004]树的计数

    [HNOI2004]树的计数 Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, ...

  4. BZOJ 1211: [HNOI2004]树的计数 purfer序列

    1211: [HNOI2004]树的计数 Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给 ...

  5. 【BZOJ1211】【HNOI2004】树的计数(prufer序,组合数)

    Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, -, dn,编程需要 ...

  6. 算法与数据结构07:前缀树,计数排序与桶排序

    算法与数据结构07:前缀树,计数排序与桶排序 前缀树 计数排序 桶排序 前缀树 Trie 1.根据字符串数组中,每个字符串的字符作为路径,组成而成的一个多叉树结构 2.每个节点都有一个paths数组, ...

  7. 树的计数 Prüfer编码与Cayley公式 学习笔记

    最近学习了Prüfer编码与Cayley公式,这两个强力的工具一般用于解决树的计数问题.现在博主只能学到浅层的内容,只会用不会证明. 推荐博客:https://blog.csdn.net/moreja ...

  8. 计算机的数学知识的手抄报图片大全,数学知识树手抄报图片大全

    数学知识树手抄报图片大全 数学在人的生活中处处可见,息息相关.做数学手抄报也是一种学习数学的方法.下面是小编为大家带来的数学知识树手抄报图片及资料,希望大家喜欢. 数学知识树手抄报图片欣赏 数学知识树 ...

  9. 《算法竞赛进阶指南》数论篇(3)-组合计数,Lucas定理,Catalan数列,容斥原理,莫比乌斯反演,概率与数学期望,博弈论之SG函数

    文章目录 组合计数 例题:Counting swaps Lucas定理 Cnm≡Cnmodpmmodp∗Cn/pm/p(modp)C_n^m\equiv C_{n\ mod\ p}^{m\ mod\ ...

最新文章

  1. tf.keras.layers.Resizing 示例 改变维度的层
  2. 仿ArrayList功能的bag类
  3. Teams App抽奖机器人 - 基础架构
  4. swarm 本地管理远程_带有WildFly Swarm的远程JMS
  5. DNF包管理命令在CentOS 8和RHEL 8上的使用
  6. Linux 命令(54)—— trap 命令(builtin)
  7. 谷粒商城:11.商品服务 — 新增商品
  8. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_12-MongoDb入门-基础概念...
  9. jquery下载教程,Juery3.0框架使用案例以及基础语法;
  10. python学习14:字典和集合
  11. t检验,单因素方差和相似非参数检验-IBM SPSS 第六版第9章译文
  12. 快闪PPT,定义PPT的全新使用方式
  13. cocos2dx-lua 圆周运动
  14. 3.1 Xilinx系列产品介绍
  15. 全数字锁相环基本原理讲解
  16. python收音机_FM收音机入门,以及Python实现FM调制解调
  17. 迪桑特宣布彭于晏成为品牌代言人
  18. 红图新媒体让你知道提升新媒体广告ROI需要关注的10个指标,
  19. java实施工程师的求职信_软件工程师英文求职信样本 .doc
  20. Vue单页应用(SPA)及其优缺点

热门文章

  1. SQL Server高级查询之常见数据库对象(触发器)第五章节
  2. poj2528 区间覆盖
  3. 计算机组成原理—指令格式
  4. [蓝桥杯]试题 基础练习 Huffuman树
  5. OpenGL基础30:模板测试
  6. python机器学习案例系列教程——支持向量机SVM、核函数
  7. OPNET网络仿真分析-1.5、OPNET中英文对比
  8. OPNET网络仿真分析-1.1.3、OPNET Modeler
  9. matlab2c使用c++实现matlab函数系列教程-cumprod函数
  10. matlab2c使用c++实现matlab函数系列教程-polyder函数