好题! 但是感觉题目描述不是很清楚
这题只是询问开除某人后,他的下属中谁会替代他的位置,不会更新这个位置
要求一个子树中忠诚度最高的人。可以想到dfs树,保留时间戳,每个节点便表示一个区间
那么便可以建树维护最高忠诚度。。。只是要保证能力值也要比被开除者高
那么根据能力值从大到小对员工排序,依次更新。那么可以保证之前更新的节点的能力值都大于当前要查询的节点
这里要注意一点,能力值相同的员工要同时查询和更新
最后一点是。。。按理说更新时应该更新这个员工表示的区间 但是这样会超时
其实只用更新此员工区间的第一个值就可以了,因为查询的时候是员工表示的区间,那么必然可以查询到更新的这个值
记得数组开大一点。。。很容易RE
//#pragma comment(linker, "/STACK:102400000,102400000")
//HEAD
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include