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

我们知道,武当派人才辈出,连祖师爷的武功都只能排行到 pp。也就是说徒弟的武功是可能超过师父的,所谓的青出于蓝胜于蓝。

请你帮忙计算每个人的所有子弟(包括徒弟的徒弟,徒弟的徒弟的徒弟....)中,有多少人的武功超过了他自己。

输入格式

输入第一行两个整数 n, p $(1 \le n \le 100000, 1 \le p \le n)$。

接下来 n-1n−1 行,每行输入两个整数 u, v$(1 \le u, v \le n)$,表示 uu 和 vv 之间存在师徒关系。

输出格式

输出一行 nn 个整数,第 ii 个整数表示武功排行为 ii 的人的子弟有多少人超过了他。

行末不要输出多余的空格。

样例输入复制

10 5
5 3
5 8
3 4
3 1
2 1
6 7
8 7
9 8
8 10

样例输出复制

0 0 2 0 4 0 1 2 0 0

挺好的一个题,就记录下了。

算出每个点有多少个儿子节点,然后求相应的区间与l逆序对的数量。

 1 #include <bits/stdc++.h>
 2 #define lowbit(x) (-x&(x))
 3 using namespace std;
 4 const int N = 1e5+10;
 5 vector<int> vs[N];
 6 typedef pair<int,int> P;
 7 vector<P> vs1[N];
 8 int a[N], d[N], sum[N], dp[N][2], res;
 9
10 int dfs(int v, int f) {
11     a[++res] = v;
12     int sum = 0;
13     for(auto u : vs[v]) {
14         if(u == f) continue;
15         d[u] = dfs(u, v);
16         sum += d[u]+1;
17     }
18     return sum;
19 }
20 void add(int x, int y) {
21     while(x < N) {
22         sum[x] += y;
23         x += lowbit(x);
24     }
25 }
26 int query(int x) {
27     int s = 0;
28     while(x > 0) {
29         s += sum[x];
30         x -= lowbit(x);
31     }
32     return s;
33 }
34 int main() {
35     int n, p, u, v;
36     scanf("%d%d", &n, &p);
37     for(int i = 1; i < n; i ++) {
38         scanf("%d%d", &u, &v);
39         vs[u].push_back(v);
40         vs[v].push_back(u);
41     }
42     d[p] = dfs(p, -1);
43     // for(int i = 1; i <= n; i ++) printf("%d ",a[i]);printf("\n");
44     // for(int i = 1; i <= n; i ++) printf("%d ",d[a[i]]);printf("\n");
45     for(int i = 1; i <= n; i ++) {
46         vs1[i+d[a[i]]].push_back(P(a[i],i));
47     }
48     for(int i = n; i >= 1; i --) {
49         for(auto p : vs1[i]) {
50             dp[p.first][0] = query(p.first);
51         }
52         dp[a[i]][1] = query(a[i]);
53         // printf("%d\n",i);
54         add(a[i], 1);
55     }
56     for(int i = 1; i <= n; i ++) printf("%d%c",dp[i][1]-dp[i][0]," \n"[i==n]);
57     return 0;
58 }

转载于:https://www.cnblogs.com/xingkongyihao/p/9852779.html

青出于蓝胜于蓝 dfs+树状数组相关推荐

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

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

  2. HDU - 5877 Weak Pair 2016 ACM/ICPC 大连网络赛 J题 dfs+树状数组+离散化

    题目链接 You are given a rootedrooted tree of NN nodes, labeled from 1 to NN. To the iith node a non-neg ...

  3. 2016 大连网赛---Weak Pair(dfs+树状数组)

    题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5877 Problem Description You are given a rooted ...

  4. CF Edu54 E. Vasya and a Tree DFS+树状数组

    Vasya and a Tree 题意: 给定一棵树,对树有3e5的操作,每次操作为,把树上某个节点的不超过d的子节点都加上值x; 思路: 多开一个vector记录每个点上的操作.dfs这颗树,同时以 ...

  5. HDU 6203 2017沈阳网络赛 LCA,DFS+树状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6203 题意:n+1 个点 n 条边的树(点标号 0 ~ n),有若干个点无法通行,导致 p 组 U V ...

  6. CodeForces - 1076E Vasya and a Tree 树剖?nono dfs+树状数组

    题目链接:https://cn.vjudge.net/problem/CodeForces-1076E 题解:树状数组维护下深度,到达每个节点,对于每次更新容斥一下,对于直接查询即可 #include ...

  7. 51nod_1809 黑白图(DFS+树状数组)

    黑白图 Problem Description 黑白图是一个由n个点和n-1条边组成的无向连通图.在图中最多只有一个节点的度会超过2,其余点的度要么为1,要么为2.一个节点的度指的是与该节点有边相连的 ...

  8. malic-2021年寒假热身-05 D - 楼高莫近危阑倚(DFS+树状数组)

     记录入度,从而找到树的根结点,从根结点进行DFS,在向叶子结点搜索的时候将当前结点值加入树状数组,在回溯的时候再减去,这样每个子树就不会互相影响.. #include <iostream> ...

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

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

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

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

最新文章

  1. 【带你重拾Redis】Redis数据结构及使用场景
  2. 派派月度环比增长明显 创新互动玩法引关注
  3. BZOJ 4291: [PA2015]Kieszonkowe 水题
  4. spark 2.4.5 简单使用
  5. android夜间模式揭露动画,Android Material Design系列之夜间模式
  6. java.util.UnknownFormatConversionException: Conversion = ‘,‘ 解决
  7. 备课笔记190826
  8. [蓝桥杯历届试题] 国庆星期日
  9. 通向财务自由之路03_判断之偏好:掌握市场为何对多数人来说如此之难
  10. 计算机控制技术微课,课程名称:微型计算机控制技术课程
  11. 防火墙之ASDM配置虚拟专用网络实践
  12. Docker 从入门到实战视频教程(15 个视频)
  13. 广告机-开机自动播放-视频-电影-图片-竖屏-分屏-展示机
  14. 文件服务器文件夹卷影副本,共享文件夹的卷影副本的最佳操作
  15. Apple账号密码自动填充
  16. 计算机文化基础0008 17秋在线作业1,【在线】《计算机文化基础0008》17秋在线作业2.doc...
  17. 有关热敏打印机接口程序
  18. PHP接入谷歌验证器(Google Authenticator)
  19. c#线程-线程间发消息-线程给窗体传值
  20. 第十二届蓝桥杯国赛真题+题解 Python

热门文章

  1. 路由器管理系统html代码,192.168.1.5 路由器登录管理界面操作步骤
  2. vs编译log4cpp代码,函数“int snprintf(char *const,const std::size_t,const char *const,...)”已有主体
  3. Mac安装CentOS8.3时出现,安装源设置基础软件仓库时出错
  4. linux performance test
  5. django慢学日常
  6. 学习mysql比较好一些书籍
  7. 关于专业技术资格、专业技术职务、职称三者的关系
  8. Python之列表和元组
  9. 【2020春招记录】 吉比特游戏研发笔试
  10. MySQL百万数据插入