#5013. Problem 3. Nap Sort

0

Problem 3. Nap Sort

Problem 3. Nap Sort

USACO 2024 January Contest, Gold

Bessie 正在尝试使用她自己的排序算法对一个整数数组进行排序。她有一堆共 NN1N21051 \leq N \leq 2\cdot 10^5)个整数 a1,a2,,aNa_1,a_2,\dots,a_N1ai10111 \leq a_i \leq 10^{11}),她将会按排序顺序将这些数放入一个单独的数组中。她反复查找这堆数中的最小数,将其删除,同时将其添加到数组的末尾。Bessie 在 pp 个数的堆中找到最小数需要花费 pp 秒。

Farmer John 命令了农场中其他一些奶牛帮助 Bessie 完成任务,她们很懒,然而 Bessie 利用了这一点。她将整数分成两堆:Bessie 堆和助手堆。对于 Bessie 堆中的每个整数,她会正常执行她的算法。对于助手堆中的每个整数,她将其分配给不同的助手奶牛。Farmer John 有一个很大的农场,所以 Bessie 可以找来任意多的助手奶牛。如果助手收到整数 aia_i,Bessie 会指示该牛小睡 aia_i 秒,并在她们醒来时立即将该整数添加到数组末尾。如果 Bessie 和一个助手同时向数组添加整数,Bessie 的整数将优先被添加,因为她是领导者。如果多个助手被分配了相同的整数,她们会同时将多个该整数添加到数组中。

请帮助 Bessie 划分她的数,使得最终得到的数组是排序的,并使得排序该数组所需的时间最少。

输入格式(从终端 / 标准输入读入):

输入的第一行包含 TT,为独立的测试用例的数量(1T101\le T\le 10)。

每个测试用例的格式如下:

每个测试用例的第一行包含 Bessie 的数组中的数的数量 NN

下一行包含 a1,a2,,aNa_1, a_2, \dots, a_N,为 Bessie 将要排序的整数。相同的数值可能会多次出现。

输入保证所有测试用例的 NN 之和不超过 21052\cdot 10^5

输出格式(输出至终端 / 标准输出):

对于每个测试用例输出一行,包含当 Bessie 以最优方案划分她的数时,排序该数组所需要的最小时间。

输入样例:


4
5
1 2 4 5 100000000000
5
17 53 4 33 44
4
3 5 5 5
6
2 5 100 1 4 5

输出样例:


6
15
5
6

在第一个测试用例中,Bessie 可以将 1,21,2 分配给助手,将 4,5,10114,5,10^{11} 留给自己。


时间 | 事件
-----+----------------------
1    | 助手添加了 1
2    | 助手添加了 2
3    | Bessie 添加了 4
5    | Bessie 添加了 5
6    | Bessie 添加了 10^{11}

在第二个测试用例中,Bessie 的最优方案是自己对所有数进行排序。一个

不正确

的划分是 Bessie 将 44 分配给助手,其余的分配给她自己,因为助手将 44 添加到数组之前 Bessie 就会将 1717 添加到数组中。

在第三个测试用例中,Bessie 可以将所有数都分配给助手。

在第四个测试用例中,Bessie 可以将 1,4,51,4,5 分配给助手,将 2,5,1002,5,100 留给自己。


时间 | 事件
-----+------------------
1    | 助手添加了 1
3    | Bessie 添加了 2
4    | 助手添加了 4
5    | Bessie 添加了 5
5    | 助手添加了 5
6    | Bessie 添加了 100

测试点性质: 测试点 2:N16N\le 16。测试点 3-5:N150N\le 150。测试点 6-8:N5000\sum N\le 5000。测试点 9-11:没有额外限制。

供题:Suhas Nagar