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