【NOI2013】树的计数

链接:http://uoj.ac/problem/122

按BFS序来,如果$B_i$与$B_{i-1}$必须在同一层,那么贡献为0,必须在不同层那么贡献为1,都可以贡献为0.5。

因为$B_i$与$B_{i-1}$相邻,所以对方案数的改变最多+1.

  1. 必须在不同层,即$D(B_{i-1})>D(B_i)$
  2. 都可以,$B_i$能往下移一层,不改变BFS序以及DFS序:  
    1. 作为兄弟,父亲必须一样(即$D(B_{i-1})==D(B_i)-1$),不然会改变DFS序.
    2. 作为儿子,该层当前不能有其他点。等价于$\{D(B_{1..i-1})\}=B\{[1...L]∪[R..N]\}$,意味着一部分在x属于前面,后面是深度都小于x的。中间的其实就是x的子树

剩下代码就很简单了。

#include<cstdio>

typedef long long ll;
template<class T>
inline void read(T&x)
{
x=;bool f=;char c=getchar();
while((c<''||c>'')&&c!='-')c=getchar(); if(c=='-')f=,c=getchar();
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
x=f?-x:x;
}
const int MAXN();
int B[MAXN],D[MAXN],n,D_num[MAXN],l,r,B_num[MAXN];
bool bf[MAXN];double Ans;
int main()
{
freopen("C.in","r",stdin);
freopen("C.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&D[i]);
for(int i=;i<=n;i++)scanf("%d",&B[i]),B_num[B[i]]=i;
for(int i=;i<=n;i++)D[i]=B_num[D[i]],D_num[D[i]]=i;
Ans=;bf[D_num[]]=bf[D_num[]]==;l=;r=n+;
for(int i=;i<=n;i++)
{
if(D_num[i-]>D_num[i])Ans+=;
else
if(D_num[i-]==D_num[i]-&&n-r++l==i-)
{
Ans+=0.5;
}
bf[D_num[i]]=;
while(bf[l+])l++;
while(bf[r-])r--;
}
printf("%.3lf",Ans);
return ;
}

UOJ#122【NOI2013】树的计数的更多相关文章

  1. [UOJ#122][NOI2013]树的计数

    [UOJ#122][NOI2013]树的计数 试题描述 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的 DFS 序以及 BFS 序.两棵不同的树的 DFS 序 ...

  2. 【BZOJ3244】【UOJ#122】【NOI2013]树的计数

    NOI都是酱的题怎么玩啊,哇.jpg 原题: 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序.两棵不同的树的DFS序有可能相同,并且它们的 ...

  3. 【uoj122】 NOI2013—树的计数

    http://uoj.ac/problem/122 (题目链接) 题意 给出一棵树的dfs序和bfs序,保证一定可以构成一棵树.问构成的树的期望深度. Solution 这是一个悲伤的故事,我YY的东 ...

  4. NOI2013 树的计数

    题目:http://uoj.ac/problem/122 85%做法: 动态规划. 首先重编号,BFS序变成1...n,然后DFS序相应重编号. 记pos[i]为i号点在DFS中的位置,即pos[d[ ...

  5. 3244: [Noi2013]树的计数 - BZOJ

    Description 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序.两棵不同的树的DFS序有可能相同,并且它们的BFS序也有可能相同, ...

  6. bzoj 3244: [Noi2013]树的计数

    Description 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序.两棵不同的树的DFS序有可能相同,并且它们的BFS序也有可能相同, ...

  7. BZOJ3244 NOI2013树的计数(概率期望)

    容易发现的一点是如果确定了每一层有哪些点,树的形态就确定了.问题变为划分bfs序. 考虑怎样划分是合法的.同一层的点在bfs序中出现顺序与dfs序中相同.对于dfs序中相邻两点依次设为x和y,y至多在 ...

  8. [BZOJ3244][NOI2013]树的计数

    这题大家为什么都写O(NlogN)的算法呢?…… 让本蒟蒻来写一个O(N)的吧…… 首先还是对BFS序和DFS序重编号,记标好的DFS序为d[1..n].令pos[x]为x在d[]中出现的位置,即po ...

  9. [bzoj3244][noi2013]树的计数 题解

    UPD: 那位神牛的题解更新了,在这里. ------------------------------------------------------------------------------- ...

  10. BZOJ3244/UOJ122 [Noi2013]树的计数

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

随机推荐

  1. Ubuntu 安装 samba 实现文件共享和source insight 阅读uboot

    环境:win10 + 虚拟机Ubuntu 12.04 一. samba的安装: # sudo apt-get install samba # sudo apt-get install smbfs 二. ...

  2. Spring第一天:Spring的概述、SpringIOC入门(XML)、Spring的Bean管理、Spring属性注入

    记得引入约束 上图路径. 此时 只需修改配置文件 便可以随意更换实现类 无需修改代码. 传统方法必须用实现类(不面向接口了)来调用方法设置属性. 而在Spring中:在创建类的过程中发现实现类有nam ...

  3. X-Content-Type-Options和 X-XSS-Protection

    X-Content-Type-Options 互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型.例如:"text/html"代表htm ...

  4. sql server 查询练习

    需要建的四个表: 学生表 create table Student ( Sno varchar(20) not null primary key, Sname varchar(20) not null ...

  5. PAT天梯赛L2-025 分而治之

    题目链接:点击打开链接 分而治之,各个击破是兵家常用的策略之一.在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破.为此参谋部提供了若干打击方案.本题就请你编写程 ...

  6. C.0689-The 2019 ICPC China Shaanxi Provincial Programming Contest

    We call a string as a 0689-string if this string only consists of digits '0', '6', '8' and '9'. Give ...

  7. Python网络爬虫(二)

    Urllib库之解析链接 Urllib库里有一个parse这个模块,定义了处理URL的标准接口,实现 URL 各部分的抽取,合并以及链接转换.它支持如下协议的 URL 处理:file.ftp.goph ...

  8. Linux如何用查看域名解析

    方法/步骤     查看本地dns配置.确保能上网,dns配置正确.可以查看网卡配置文件和dns配置文件,网卡里配置优先.   ping命令.第一行会返回域名及解析的ip.   host命令.会返回域 ...

  9. Jmeter4.0---- HTTP请求默认值(15)

    1.说明 在线程组中,添加”HTTP请求默认值”,并填写 协议,服务器名称/IP ,端口号,编码等 ,之后该线程组中的所有请求,可以不用填写这几项,启动后会直接调用”HTTP请求默认值”中的数据,方便 ...

  10. POJ 3321 Apple Tree DFS序 + 树状数组

    多次修改一棵树节点的值,或者询问当前这个节点的子树所有节点权值总和. 首先预处理出DFS序L[i]和R[i] 把问题转化为区间查询总和问题.单点修改,区间查询,树状数组即可. 注意修改的时候也要按照d ...