[Algorithm] 双关键字查询问题
问题
现在米尔科村的考试时间。每个人都想尽可能不费吹灰之力地通过考试,这并不容易。米尔科意识到,对他来说,最好是找到比他了解更多的人,并向他们学习。每个人都跟着,现在每个人都在寻找可以学习的人。
我们可以用两个整数\(A\)和\(B\)来模拟学生对考试的准备程度。数字\(A\)表示学生对该科目的理解程度,而数字\(B\)则与他们的知识量成正比。
作为村长,米尔科决定,学生只会向\(A\)和\(B\)大于等于白己的学生寻求帮助(任何学生都不会向不了解该题的人以及比自己了解较少的人寻求帮助)。
此外,学生将尽量减少知识量的差异(这样学生就不会打扰那些更好的学生)。如果这个选择不是唯一的,他们会尽量减少理解的差异。
米尔科的村庄最近成为了一个非常受欢迎的郊区,新学生不断进入(及时参加考试)。由于米尔科的严格规定,他们对米尔科的规定感到困惑,不知道该去哪里)。他们决定向邻村的一位程序员寻求帮助。
输入格式
第一行输入包括一个整数\(N\)(\(1\leq N \leq 200000\)),询问和到达村庄的人数。以下\(N\)行中的每一行都包含:
- "D A B",一个知识为A和B的学生搬进来了
- "P I",第i个搬入的学生想知道向谁寻求帮助
没有两个学生两个数字都相等
输出格式
对于每个查询("P I"行),输出第i个学生应该寻求帮助的学生。学生们按搬进村子的顺序编号(从1开始)。如果无法帮助学生,请输出"NE"。
输入样例1:
6
D 3 1
D 2 2
D 1 3
P 1
P 2
P 3
输出样例1
NE
NE
NE
输入样例2
6
D 8 8
D 2 4
D 5 6
P 2
D 6 2
D 4
输出样例2:
3
1
输入样例3:
7
D 5 2
D 5 3
P 1
D 7 1
D 8 7
P 3
P 2
输出样例3
2
4
4
其他限制:Code: 16KB;Memory: 64MB;Time: 400ms.
解法
可能解法:K-D树(待完善)