传送门

思路:

首先一眼dfs序,转化成序列问题来解决这是没有问题的

但是我在如何求徒弟中武功比他高的时候纠结好久。。。其实是我在dfs序中编的号和他给的武功等级让我很混乱了///

这里就运用了树状数组求逆序对的那种思想,我从武功最高的人开始(等级为1的)先看他徒弟的整个区间内是否为0,为0就代表徒弟武功都没他高,然后在把他对应的编号+1(因为我们是按照武功等级来访问的,所以如果访问师父时不为0,就说明前面访问的有他的徒弟,即武功比他高)

#include<bits/stdc++.h>
#define pb push_back
using namespace std;const int maxn = 1e5+5;
int in[maxn],out[maxn],cnt;
int s[maxn];
int n,p;
vector<int>vt[maxn];
int lowbit(int x)
{return x & -x;
}
void add(int x,int num)
{while(x < maxn){s[x] += num;x += lowbit(x);}return ;
} int sum(int x)
{int res = 0;while(x){res += s[x];x -= lowbit(x);}return res;
}
void dfs(int x,int f)
{in[x] = ++cnt;for(int i = 0;i < vt[x].size();++i){int v = vt[x][i];if(v == f) continue;dfs(v,x);}out[x] = cnt;return ;
}
int main()
{while(~scanf("%d %d",&n,&p)){for(int i = 0;i <= n;++i)vt[i].clear();for(int i = 1;i < n;++i){int u,v;scanf("%d %d",&u,&v);vt[u].pb(v);vt[v].pb(u);}cnt = 0;dfs(p,-1);for(int i = 1;i <= n;++i){int ans = sum(out[i]) - sum(in[i] - 1);printf("%d%c",ans,i == n?'\n':' ');add(in[i],1);}}return 0;
} 

青出于蓝胜于蓝 (dfs序 + BIT)相关推荐

  1. 计蒜客-青出于蓝胜于蓝 dfs+树状数组

    题目描述: 武当派一共有 n人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都 ...

  2. 计蒜客 A组模拟赛 青出于蓝胜于蓝(dfs序,树状数组)

    题意:中文 武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人 ...

  3. 计蒜客(青出于蓝胜于蓝) dfs序+树状数组

    武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名 第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一个师 ...

  4. 计蒜客2018蓝桥A组模拟赛(一)青出于蓝胜于蓝(dfs序+线段树)

    题目: 武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,- 武功最低的人排名第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一个 ...

  5. 【计蒜客】 青出于蓝胜于蓝-【dfs序+归并树 】

    武当派一共有 nn 人,门派内 nn 人按照武功高低进行排名,武功最高的人排名第 11,次高的人排名第 22,- 武功最低的人排名第 nn.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一 ...

  6. 2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组

    武当派一共有 nnn 人,门派内 nnn 人按照武功高低进行排名,武功最高的人排名第 111,次高的人排名第 222,... 武功最低的人排名第 nnn.现在我们用武功的排名来给每个人标号,除了祖师爷 ...

  7. 牛客 - 红蓝图(克鲁斯卡尔重构树的dfs序上建主席树)

    题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的无向图,每条边都有边权和颜色,颜色分为红色和蓝色,现在有 q 次相互独立的操作,每次操作会询问 ( x , t ) ,问删除掉所有权值 ...

  8. 青出于蓝 dfs序+树状数组

    题目来源:蓝桥杯2018模拟 武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名第 n.现在我们用武功的排名来给每个人标号, ...

  9. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  10. A and B and Lecture Rooms CodeForces - 519E LCA+dfs序

    看到这个题的第一个思路就是就是统计以每一个点为根的所有节点个数,然后具体就分情况讨论一下即可. 因为刚刚学习了dfs序,这个题就用了dfs序来通过进出时间戳来相减表示其为根的子节点个数. 分情况 我们 ...

最新文章

  1. Android开发举步维艰,上弘法寺七七四十九天取得“真经”!
  2. jstack-查看Java进程的线程堆栈信息,锁定高消耗资源代码
  3. 43 | 发挥人的潜能:探索式测试
  4. C++虚函数实现多态的机制
  5. 绘制商务感十足的折线图和面积图
  6. python曲线拟合_python如何实现数据的线性拟合
  7. JUnit 5扩展模型的生命周期
  8. 吴恩达作业11:残差网络实现手势数字的识别(基于 keras)+tensorbord显示loss值和acc值
  9. 开关电源怎么测试文波_开关电源环路增益测试
  10. 实现1-2+3-4+5-6+…+99-100的算法的程序
  11. ssm返回oracle序列,SSM之JSON通用返回格式
  12. Java Runtime 详解
  13. Git命令提交代码步骤
  14. 联想重装系统去掉保护_联想硬盘保护系统7.6卸载后PE还原系统步骤
  15. 基于51单片机的音乐盒彩灯频谱喷泉原理图方案设计
  16. 基于公共政策的城市停车规划
  17. 娃娃机共享扫码平台开发
  18. 管理SQL Server AlwaysOn(5)——常规监控(1)——常规监控
  19. 干货!山东省软件著作权登记申请好处及软著的保护期解答
  20. kafka sql入门

热门文章

  1. deepin20 外接显示器,标题栏美化
  2. java基础--狂神
  3. 机器学习笔记(四)——正则化
  4. 热力图pycharm
  5. 百度搜索算法全解析SEO课程笔记
  6. 播放全景视频【一】:用unity Video Player视频播放器来播放360全景视频
  7. 世界标准时间(日期带T)转北京时间
  8. 关于JavaScript打印去掉页眉页脚
  9. Requests 库 | 不可胜数的 Python 第三方库
  10. 揭秘当下最主流的的7个app推广渠道及其不为人知的秘密