题意:

现在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. WEB下载显示下载名称乱码--java

    将文件名编码转换为ISO8859-1即可,如下 downloadFileName = new String(fileName.getBytes("gbk"), "ISO8 ...

  2. dwr框架介绍

    转: [DWR框架]过时了吗? 置顶 2018年06月02日 11:59:02 许你笑颜 阅读数:4129   版权声明: https://blog.csdn.net/smileyan9/articl ...

  3. 改变 小程序 select 多选框 选中图片

    https://www.jianshu.com/p/11eb5b0bfe1a 注意 博客介绍的  在 wxss  backgroung-image 中引入小程序内图片是不可的,传到cdn上才实现

  4. linux命令总结mpstat命令

    简介 mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查 ...

  5. (转)flask的context机制

    本文转自:https://blog.tonyseek.com/post/the-context-mechanism-of-flask/ 作者:无知的 TonySeek 注意:本文仅仅作为个人mark, ...

  6. 【51Nod】1273 旅行计划 树上贪心

    [题目]51Nod 1273 旅行计划 [题意]给定n个点的树和出发点k,要求每次选择一个目的地旅行后返回,使得路径上未访问过的点最多(相同取编号最小),旅行后路径上所有点视为访问过,求旅行方案.\( ...

  7. HTML5 CSS Reset

    最近在学习HTML和CSS,发现一个不错的模板,放于此处. /* html5doctor.com Reset Stylesheet v1.6.1 Last Updated: 2010-09-17 Au ...

  8. insert into与insert ignore以及replace into的区别

    insert ignore表示,如果表中已经存在相同的记录,则忽略当前新数据: INSERT INTO有无数据都插入,如果主键则不插入; REPLACE INTO 如果是主键插入则会替换以前的数据; ...

  9. android getWidth()和getMeasuredWidth()方法的区别

    getWidth() Return the width of the your view. Returns The width of your view, in pixels. 源代码: public ...

  10. 20155303 实验四 Android程序设计

    20155303 实验四 Android程序设计 目录 第24章:初识Android 任务一: 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号 学习 ...