题目描述

猴猴今天要和小伙伴猩猩比赛爬树,为了公平不碰撞,猴猴和猩猩需要在不同的树上攀爬。于是它们选了两颗节点数同为n的树,并将两棵树的节点分别以1~n标号(根节点标号为1),但两棵树的节点连接方式不尽相同。

现在它们决定选择两个标号的点进行比赛。为了方便统计,规定它们比赛中必须都向上爬。(即选定的赛段节点u→节点v都必须指向叶子方向)请你求出这两棵树上共有多少对节点满足比赛的需求。

题目解析

先求出第一棵树的 d f s dfs dfs序,得到每个节点本身的编号以及子树的编号范围 [ l i , r i ] [l_i,r_i] [li​,ri​] 。 用树状数组来维护后面的计算。 在 D F S DFS DFS处理第二棵树时,我们每处理完一个节点,就将该节点在第一棵树中的对应编号设为 1 1 1,处理完所有子节点后,查询编号区间 [ l i , r i ] [l_i,r_i] [li​,ri​]的区间和,即当前子树下,有多少个节点在树 1 1 1中也是当前节点的子孙节点。维护计数即可。

代码

#include<cstdio>
#include<cstring>
using namespace std;
const int N=100000+5;int n,cnt,ls[N],next[2*N],v[2*N];
inline void add(int x,int y)
{next[++cnt]=ls[x]; ls[x]=cnt;v[cnt]=y; next[++cnt]=ls[y]; ls[y]=cnt;v[cnt]=x;
}
int id,dfn[N],siz[N];
void pre(int x,int fa)
{dfn[x]=++id; siz[x]=1;for(int i=ls[x];i;i=next[i]){int y=v[i];if(y==fa) continue; pre(y,x);siz[x]+=siz[y];}
}
int t[N],ans[N];
void change(int x,int num) {for(;x<=n;x+=x&-x) t[x]+=num;}
int ask(int x) {int ret=0;for(;x;x-=x&-x) ret+=t[x];return ret;}
void dfs(int x,int fa)
{int cmp=0;for(int i=ls[x];i;i=next[i]){int y=v[i];if(y==fa) continue;cmp=ask(dfn[y]+siz[y]-1)-ask(dfn[y]-1); dfs(y,x); ans[y]-=cmp; change(dfn[y],1); }ans[x]=ask(dfn[x]+siz[x]-1)-ask(dfn[x]-1);
}
int main()
{    int x,y; scanf("%d",&n);    for(int i=1;i<n;i++) scanf("%d%d",&x,&y),add(x,y);pre(1,0);    cnt=0;memset(ls,0,sizeof(ls));     for(int i=1;i<n;i++) scanf("%d%d",&x,&y),add(x,y); dfs(1,0);    for(int i=1;i<=n;i++) ans[0]+=ans[i];printf("%d",ans[0]);return 0;
}

[11.02] 猴猴的比赛相关推荐

  1. [11.02] 猴猴吃香蕉

    题目描述 猴猴最爱吃香蕉了.每天猴猴出门都会摘很多很多的香蕉,每个香蕉都有一个甜度,猴猴不一定要把所有的香蕉都吃掉,猴猴每天都有一个心情值K,猴猴希望当天吃的香蕉满足这么一个条件,这些香蕉的甜度乘积恰 ...

  2. qgc地面站如何导入离线地图_QGC地面站工具下载 QGroundControl(QGC地面站软件) v2018.11.02 免费安装版 下载-脚本之家...

    QGroundControl是非常实用,由dronecode推出的一款专业的地面站软件,这款软件为任何支持MAVLink的无人机提供全面的飞行控制和任务规划,而且同样也为ArduPilot或PX4 P ...

  3. Interview:算法岗位面试—11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录

    ML岗位面试:11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录 Interview:算法岗位面试-11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录 导读:预约考点的 ...

  4. 2021年11月Python小屋编程比赛获奖名单

    中国大学MOOC"Python程序设计基础"第5次开课 推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社 ...

  5. 每日学习小记 11/02

    1. 移动前端开发头部标签 1 <!-- Retina iPhone 和 Retina iTouch,114x114 像素,可以没有,但推荐有 --> 2 <link rel=&qu ...

  6. star ccm+ 11.02安装

    STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作 2 正式安装 3 软件破解 4 软件测试 1 ...

  7. O2OA V4 Build 11.02 发布! 全功能分布式企业信息化办公平台

    项目主页 : https://www.oschina.net/p/o2oa 下载地址 : http://www.o2oa.io v4 build 11.02更新内容:  新增功能:     1.[内容 ...

  8. 11.02 长者题解

    11.02 校内模拟赛 题 长者题解和自身体会 #include<bits/stdc++.h> using namespace std; typedef long long ll; typ ...

  9. [51nod] 猴猴吃苹果 {dfs}

    题目 猴猴最喜欢在树上玩耍,一天猴猴又跳上了一棵树,这棵树有N个苹果,每个苹果有一个编号,分别为0~N-1,它们之间由N-1个树枝相连,猴猴可以从树枝的一端爬到树枝的另一端,所以猴猴可以从任意一个苹果 ...

最新文章

  1. html5 测试视频
  2. html tr中可以有br吗,html table tr td br 什么意思 缩写
  3. java中properties作用,java中Properties有什么用,举例说明?
  4. 【pyqt5学习】——tableWidget学习
  5. mysql 解压缩安装_[mysql] MySQL解压缩安装步骤
  6. 计算机初赛基础知识,备战初赛计算机基础知识
  7. IBM 启动网格项目 -- “全球社区网格”,招募志愿者
  8. 对于react-redux的理解
  9. Übersicht for mac(自定义桌面工具)v1.6(68)最新版
  10. 固定资产管理模式的演变历程
  11. 小米手机后台弹出界面(允许应用在后台弹出界面)权限问题解决方案
  12. epic注册什么服务器最好,epic国内有服务器吗(epic服务器在哪)
  13. 无线认证web认证服务器,wifi web认证服务器地址
  14. Spherical Harmonics Lighting
  15. 解决VsCode有时无法输入的问题及vim插件下NORMAL模式的快捷操作
  16. ECMAScript6常用语法
  17. 【M365运维】查看电脑硬盘加密状态是否同步到 Intune
  18. R中报错:Error :$ operator is invalid for atomic vectors
  19. 串的基本操作及统计字符频度-数据结构类C语言
  20. 软件测试工程师的优点,合格的软件测试工程师需要必备哪些优点

热门文章

  1. 通过港交所聆讯,背靠微创医疗的机器人能否成为国版“达芬奇”?
  2. 尚医通-项目介绍(一)
  3. 推荐 8 个支持 Vue3 的前端 UI 组件库,免费开源、漂亮美观,涵盖常用的业务组件
  4. hive:函数:length
  5. 《HelloGitHub》第 88 期
  6. WPS PPT 公式编辑 希腊字母不显示及公式编辑器中运算符号、希腊字母不显示
  7. iMX6ULL烧录提示 wait for /dev/mmcblk0
  8. 【可信计算】第三次课:可信计算密码技术
  9. 视频教程-赵强老师:Oracle数据库从10g到11g(6)管理方案对象-Oracle
  10. uniapp里适合添加的一些好看的图片片