题意:

现在n个人,其中编号0的是老板,之后n-1个员工,每个员工只有一个上司,有一个忠诚值和能力值。每次要解雇一个人的时候,从他的下属中选取能力值大于他的且忠诚值最高的一个,若不存在则输出-1.共m次询问,每次询问i,输出解雇i会选择哪个编号的员工代替值。(所有询问都不相互影响)

#include<bits/stdc++.h>
using namespace std;
#define N 50020 struct peo
{
int a,v,id;
peo()
{
a=;v=;id=;
} }s[N];
int t[N<<];
int cnt,n,q;
vector<int>v[N];
int ha[],l[N],r[N],ans[N]; void dfs(int x)
{
l[x]=++cnt;
for(int i=;i<v[x].size();i++)
dfs(v[x][i] );
r[x]=cnt;
} void build(int L,int R,int pos)
{
t[pos]=-;
if(L==R)
return ;
int mid=(L+R)>>;
build(L,mid,pos<< );
build(mid+,R,pos<<|);
} bool cmp(peo a,peo b)
{
return a.a>b.a;
} void update(int x,int v,int L,int R,int pos)
{
if(L==R)
{
t[pos]=v;
return ;
}
int mid=(L+R)>>;
if(x<=mid)
update(x,v,L,mid,pos<<);
else
update(x,v,mid+,R,pos<<|);
t[pos]=max(t[pos<<],t[pos<<|]);
} int query(int l,int r,int L,int R,int pos)
{
int ans=-;
if(l<=L&&r>=R)
return t[pos];
int mid=(L+R)>>;
if(l<=mid)ans=max(ans,query(l,r,L,mid,pos<<));
if(r>mid)ans=max(ans,query(l,r,mid+,R,pos<<|));
return ans;
} int main()
{
int cas;cin>>cas;
while(cas--)
{
scanf("%d%d",&n,&q);
for(int i=;i<n;i++)
v[i].clear(); for(int i=;i<n;i++)
{
int pre;
scanf("%d%d%d",&pre,&s[i].v,&s[i].a);
v[pre].push_back(i);
s[i].id=i;
ha[s[i].v]=i;
}
cnt=;
dfs();
build (,n-,);
sort(s+,s+n,cmp);
int i=,j;
while(i<n)
{
j=i;
while(j<n&&s[i].a==s[j].a)
{
int k=query( l[s[j].id ],r[s[j].id ]-,,n-, );
if(k==-)
ans[s[j].id ]=-;
else
ans[s[j].id]=ha[k];
j++;
}
j=i;
while(j<n&&s[i].a==s[j].a)
{
update(l[s[j].id ]-,s[j].v,,n-, );
j++;
}
i=j;
}
while(q--)
{
int x;
scanf("%d",&x);
printf("%d\n",ans[x]);
}
}
return ;
}

Successor hdu 4366 线段树的更多相关文章

  1. Successor HDU - 4366 (预处理,线段树,dfs序)

    Successor HDU - 4366 Sean owns a company and he is the BOSS.The other Staff has one Superior.every s ...

  2. hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  3. hdu 3974 线段树 将树弄到区间上

    Assign the task Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. hdu 3436 线段树 一顿操作

    Queue-jumpers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. hdu 3397 线段树双标记

    Sequence operation Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  6. hdu 4578 线段树(标记处理)

    Transformation Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others) ...

  7. hdu 4533 线段树(问题转化+)

    威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  8. hdu 2871 线段树(各种操作)

    Memory Control Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  9. hdu 4052 线段树扫描线、奇特处理

    Adding New Machine Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

随机推荐

  1. HGOI 20181027 幻象(概率DP)

    40 pts: 考场上打了40分暴力,理论的话就是概率树,把每一个状态去去到各个带权(概率)的和就是答案 最终处理的话就是dfs出01序列0代表没有幻象,1代表出现幻象然后在每一次dfs出一段序列的时 ...

  2. 广二模拟赛 Problem A: 青春野狼不做理性小魔女的梦 解题报告

    Problem A: 青春野狼不做理性小魔女的梦 题意 给一个长为\(k\)的序列\(A\)和一个数\(n\),给出一部分\(A_i\)的值,另一部分为\(-1\),代表不知道这个\(A_i\)是多少 ...

  3. c++ 使用PI

    #define _USE_MATH_DEFINES #include<cmath> 加上上面这个就可以使用 M_PI 了,不行就使用下面这个: #define _USE_MATH_DEFI ...

  4. word 公式为图片

  5. 使用 EXISTS 代替 IN 和 inner join

    在使用Exists时,如果能正确使用,有时会提高查询速度: 1,使用Exists代替inner join 2,使用Exists代替 in 1,使用Exists代替inner join例子: 在一般写s ...

  6. MySQL日志功能详解

    MySQL日志功能详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询日志 它是用来保存所有跟查询相关的日志,这种日志类型默认是关闭状态的,因为MySQL的用户有很多,如果 ...

  7. Spark记录-本地Spark读取Hive数据简单例子

    注意:将mysql的驱动包拷贝到spark/lib下,将hive-site.xml拷贝到项目resources下,远程调试不要使用主机名 import org.apache.spark._ impor ...

  8. LaTeX文章结构

    %导言 %\documentclass{article} %ctexbook \documentclass{ctexbook} \title{\heiti 监督学习} % 黑体 \author{\ka ...

  9. kombu源码Producer收获一

    celery内置了kombu库,看了一下kombu的源码,从官网最简单的一个例子来分析---消息发布,源码如下: from __future__ import absolute_import, uni ...

  10. git 学习小记之图形化界面客户端

    习惯了 Windows 的用户,一直不喜欢用类似命令行的东西来操作,当然我也不是不喜欢,只是操作太慢了.也许 Linux 大神在命令行的帮助下,办事效率翻倍,那也是非常常见的事情..当然我不是大神,所 ...