现在伯兰正在举行选举,你想要赢得这场选举。更确切地说,你希望所有选民都投你的票。 总共有n名选民,有两种方法可以说服每名选民为你投票:
第一种方法:说服第i名选民需要向他支付pi枚硬币; 第二种方法:只要已有mi名其他选民为你投票,第i名选民就会免费为你投票。
此外,选民为你投票的过程会分多个阶段触发。例如,现有 5 名选民,其m1=1、m2=2、m3=2、m4=4、m5=5,你可以花钱买下第 5 名选民的选票,最终所有选民都会为你投票。此时支持你的选民集合变化过程为:5→1,5→1,2,3,5→1,2,3,4,5。 请计算让所有选民都为你投票所需花费的最少硬币数。
第一行输入一个整数t(1≤t≤2×10^5)—— 测试用例的数量。 每个测试用例的第一行输入一个整数n(1≤n≤2×10^5)—— 选民的数量。 接下来n行,每行输入两个整数mi和pi(1≤pi≤10^9,0≤mi<n),描述第i名选民的信息。 保证所有测试用例的n之和不超过2×10^5。
对于每个测试用例,输出一个整数 —— 让所有选民为你投票的最少硬币花费
3 3 1 5 2 10 2 8 7 0 1 3 1 1 1 6 1 1 1 4 1 4 1 6 2 6 2 3 2 8 2 7 4 4 5 5
8 0 7
样例1的第一个解释 操作:你花钱买了选民 3 的选票,此时只有选民 3 明确投你。 当前支持你的选民数量:1 个(仅 3)。 检查剩下的选民 1 的条件(m₁=1)—— 选民 1 需要1 个其他选民先投你,他就免费投你。 此时已经有选民 3 投你了(刚好 1 个 “其他选民”),满足 m₁=1 的条件。所以选民 1 自动免费加入,支持集合变成 {1,3}。 当前支持你的选民数量:2 个(1、3)。 检查最后剩下的选民 2 的条件(m₂=2)—— 选民 2 需要2 个其他选民先投你,他就免费投你。 此时已经有选民 1、3 投你了(刚好 2 个 “其他选民”),满足 m₂=2 的条件。 所以选民 2 自动免费加入,支持集合变成 {1,2,3}。