青出于蓝胜于蓝 dfs+树状数组
武当派一共有 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+树状数组相关推荐
- 计蒜客-青出于蓝胜于蓝 dfs+树状数组
题目描述: 武当派一共有 n人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都 ...
- 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 ...
- 2016 大连网赛---Weak Pair(dfs+树状数组)
题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5877 Problem Description You are given a rooted ...
- CF Edu54 E. Vasya and a Tree DFS+树状数组
Vasya and a Tree 题意: 给定一棵树,对树有3e5的操作,每次操作为,把树上某个节点的不超过d的子节点都加上值x; 思路: 多开一个vector记录每个点上的操作.dfs这颗树,同时以 ...
- HDU 6203 2017沈阳网络赛 LCA,DFS+树状数组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6203 题意:n+1 个点 n 条边的树(点标号 0 ~ n),有若干个点无法通行,导致 p 组 U V ...
- CodeForces - 1076E Vasya and a Tree 树剖?nono dfs+树状数组
题目链接:https://cn.vjudge.net/problem/CodeForces-1076E 题解:树状数组维护下深度,到达每个节点,对于每次更新容斥一下,对于直接查询即可 #include ...
- 51nod_1809 黑白图(DFS+树状数组)
黑白图 Problem Description 黑白图是一个由n个点和n-1条边组成的无向连通图.在图中最多只有一个节点的度会超过2,其余点的度要么为1,要么为2.一个节点的度指的是与该节点有边相连的 ...
- malic-2021年寒假热身-05 D - 楼高莫近危阑倚(DFS+树状数组)
记录入度,从而找到树的根结点,从根结点进行DFS,在向叶子结点搜索的时候将当前结点值加入树状数组,在回溯的时候再减去,这样每个子树就不会互相影响.. #include <iostream> ...
- 计蒜客(青出于蓝胜于蓝) dfs序+树状数组
武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名 第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一个师 ...
- 2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组
武当派一共有 nnn 人,门派内 nnn 人按照武功高低进行排名,武功最高的人排名第 111,次高的人排名第 222,... 武功最低的人排名第 nnn.现在我们用武功的排名来给每个人标号,除了祖师爷 ...
最新文章
- 【带你重拾Redis】Redis数据结构及使用场景
- 派派月度环比增长明显 创新互动玩法引关注
- BZOJ 4291: [PA2015]Kieszonkowe 水题
- spark 2.4.5 简单使用
- android夜间模式揭露动画,Android Material Design系列之夜间模式
- java.util.UnknownFormatConversionException: Conversion = ‘,‘ 解决
- 备课笔记190826
- [蓝桥杯历届试题] 国庆星期日
- 通向财务自由之路03_判断之偏好:掌握市场为何对多数人来说如此之难
- 计算机控制技术微课,课程名称:微型计算机控制技术课程
- 防火墙之ASDM配置虚拟专用网络实践
- Docker 从入门到实战视频教程(15 个视频)
- 广告机-开机自动播放-视频-电影-图片-竖屏-分屏-展示机
- 文件服务器文件夹卷影副本,共享文件夹的卷影副本的最佳操作
- Apple账号密码自动填充
- 计算机文化基础0008 17秋在线作业1,【在线】《计算机文化基础0008》17秋在线作业2.doc...
- 有关热敏打印机接口程序
- PHP接入谷歌验证器(Google Authenticator)
- c#线程-线程间发消息-线程给窗体传值
- 第十二届蓝桥杯国赛真题+题解 Python
热门文章
- 路由器管理系统html代码,192.168.1.5 路由器登录管理界面操作步骤
- vs编译log4cpp代码,函数“int snprintf(char *const,const std::size_t,const char *const,...)”已有主体
- Mac安装CentOS8.3时出现,安装源设置基础软件仓库时出错
- linux performance test
- django慢学日常
- 学习mysql比较好一些书籍
- 关于专业技术资格、专业技术职务、职称三者的关系
- Python之列表和元组
- 【2020春招记录】 吉比特游戏研发笔试
- MySQL百万数据插入