题意可以概括为:
给定一个长度为 n 的序列,进行 m 轮操作。 每一轮都删除当前序列中的最小值;如果最小值有多个,就删除下标最小的那个。 最后输出剩余序列。
在一间能量实验室中,从左到右依次摆放着 n 个晶石,每个晶石拥有一个正整数的能量值。研究员将进行 m 轮净化操作,每轮操作规则如下:在当前尚未被净化的晶石中,选择能量值最小的一个将其净化移除;如果同时存在多个能量值同为最小的晶石,则移除其中最靠左(即出现最早)的那一个。请你计算出所有净化操作完成后,剩余晶石的能量值序列(保留原始顺序)。
约束:
2*10^5。2*10^5,净化轮数 m 满足 0≤m<n。4*10^5。第一行包含一个整数 T,表示测试数据的组数。接下来每组数据包含两行:第一行有两个整数 n 和 m,分别表示晶石数量和净化轮数;第二行有 n 个整数,依次给出从左到右每个晶石的能量值。
对于每组测试数据,在一行内输出剩余晶石的能量值,整数之间用空格分隔。
输入
1
5 3
2 3 2 1 2
输出
3 2
说明
初始晶石能量值为 [2,3,2,1,2],共 n=‘5‘ 个晶石,需要进行 m=‘3‘ 轮净化。
第 1 轮:当前序列中最小能量值为 1,仅有位置 4 的晶石为 1,将其净化移除,剩余序列为 [2,3,2,2]。
第 2 轮:最小能量值为 2,存在多个(原位置 1、3、5),移除最靠左的 2(原位置 1),剩余序列为 [3,2,2]。
第 3 轮:最小能量值仍为 2,移除剩余中最靠左的 2(原位置 3),最终剩余晶石为 [3,2],按原顺序输出 3 2。
输入
1
3 0
5 3 7
输出
5 3 7
说明
净化轮数 m=‘0‘,表示不进行任何净化操作。剩余晶石即为初始序列 [5,3,7],按原顺序输出 5 3 7。
输入
1
4 3
4 4 4 4
输出
4
说明
初始晶石能量值全为 4,共 n=‘4‘ 个,净化 m=‘3‘ 轮。每轮当前序列的最小值均为 4,根据规则移除最靠左的一个。
第 1 轮:移除位置 1 的 4,剩余 3 个 4。
第 2 轮:移除剩余中最靠左的 4(原位置 2),剩余 2 个 4。
第 3 轮:再移除剩余中最靠左的 4(原位置 3),最终只剩位置 4 的晶石,输出 4。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册