CodeforcesRound#498 (Div.3)E题Military Problem
简述题意:
给你一棵树,然后给你q次询问。每次给你u,k。让你打印第u个节点往下传达命令的顺序中(包括u本身),第k个人是几号。
解法思路:
预处理先裸跑dfs,将顺序存下,并且同时记录下当前节点的dfs遍历顺序a[i]以及当前节点的 子节点数量b[i]。
然后给你u,k。只要b[u]+1>=k 就输出 l[a[i]+q-1] 否则输出-1;
代码
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
#include<vector>
#define N 200005
using namespace std;
int a[N],b[N],l[N],w=1,n,q,x,u,k;
vector<int>v[N];
void dfs(int x){a[x]=w;//记录x在dfs顺序中的位置 l[w++]=x;//记录dfs顺序 for(auto i:v[x])dfs(i);b[x]=w-1-a[x];//记录x的子节点个数
}
int main(){cin>>n>>q;for(int i=2;i<=n;i++){cin>>x;v[x].push_back(i);}dfs(1);
// for(int i=0;i<w;i++)cout<<l[i]<<" ";cout<<endl;
// for(int i=1;i<=n;i++)cout<<b[i]<<" ";cout<<endl;
// for(int i=1;i<=n;i++)cout<<a[i]<<" ";cout<<endl;while(q--){cin>>u>>k;if(b[u]+1<k)puts("-1");else cout<<l[a[u]+k-1]<<endl;}
}
CodeforcesRound#498 (Div.3)E题Military Problem相关推荐
- Codeforces Round #498 (Div. 3) - 赛后补题
D. Two Strings Swaps PS:没思考清楚,重复算了一些情况. #include<bits/stdc++.h> #include<bitset> #define ...
- Codeforces Round #498 (Div. 3)【完结】
2022.3.6 题单地址:https://codeforces.com/contest/1006 目录 A. Adjacent Replacements B. Polycarp's Practice ...
- Codeforces Round 700 (Div. 2) B题 英雄杀怪兽
Codeforces Round 700 (Div. 2) B题 链接: https://codeforces.com/contest/1480/problem/B 大致意思: n组数据,每组数据的第 ...
- Military Problem CodeForces 1006E (dfs序)
J - Military Problem CodeForces - 1006E 就是一道dfs序的问题 给定一个树, 然后有q次询问. 每次给出u,k, 求以u为根的子树经过深搜的第k个儿子,如果一个 ...
- Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维)
Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维) time limit per tes ...
- bestcoder #56 div 2 B Clarke and problem(dp)
Clarke and problem Accepts: 169 Submissions: 372 Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- Educational Codeforces Round 133 (Rated for Div. 2) D题
题目链接:Problem - D - Codeforces 一道非常经典的完全背包求方案数题: 首先先写好我们的状态转移方程,那什么代表体积,什么代表物品数目呢: 其实很清晰k, k + 1 ... ...
- Educational Codeforces Round 103 (Rated for Div. 2)前四题
Educational Codeforces Round 103 (Rated for Div. 2) 第二次被别人hack,悲 A - K-divisible Sum 题意 给定两个整数 n,kn, ...
- Educational Codeforces Round 131 (Rated for Div. 2)刷题记录OR题解
题解 A Grass Field 题面翻译 给出一个 2×22 \times 22×2 的矩阵,矩阵的值都是 000 和 111,定义一次操作:选择一个点,将其所在的行和列的点的值全部修改为 000, ...
- codeforces Educational Codeforces Round 49 (Rated for Div. 2) C题
刚开始拿到这题很懵逼,知道了别人的思路之后开始写,但是还是遇到很多坑,要求求P2/S最大.p=a b.就是求(a2+ b2 +2ab)/ab最大,也就是a/b +b/a最大.那么题意就很明显了. 但是 ...
最新文章
- python的try菜鸟_python异常处理try except过程解析
- RAR压缩包审计工具unrar-nofree
- div css导航栏设计,CSS+DIV设计实例:超酷的竖排导航栏
- 微型计算机的alu部件是包含在,微型计算机的ALU部件是什么?
- 上海c语言做游戏培训,0基础C语言游戏逆向课程,培训视频+项目实战
- [转]Android核心分析之二:方法论探讨之概念空间篇
- 使用JMH做Java微基准测试:JMH(Java Micro Benchmark) 简介
- python写算法注册机_用python 写 Atlantis Word Processor 注册机
- 云杰恒指:9.4恒指期货实盘指导交易复盘
- Linux远程访问的方法
- linux如何把系统盘转换成gpt,如何更改/转换Ubuntu MBR驱动器到GPT,并从EFI启动Ubuntu?...
- 2020湖南省技能竞赛获奖名单_2020年全国职业院校技能大赛教学能力比赛落幕 湖南获一等奖数量排全国第一...
- 参考答案-数据库原理测试一
- 【Codecs系列】双帧参考特性
- 如何启动app和exe程序
- PbootCMS教程-PbootCMS建站教程-Pboot模板开发教程
- MTC生态最新的落地应用,连环竞技场即将耀世而来
- DRG/DIP 分组器接口开放调用
- StringBuilder连接字符串
- c# 火狐浏览器怎么嵌入窗体中_C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子...