本文最后更新于 2 分钟前,文中所描述的信息可能已发生改变。
Problem - D - Codeforces
题目类型
#DP #子序列DP #贪心
解题思路
贪心,直接计算需要删除的元素数。从后往前处理,每次删除造成违规次数的元素。但是实际删除元素后,并不能构成“好序列”,删除的元素可以对应一个违规元素对,那么删除的元素数其实是指违规元素对的个数。从后往前,即优先破坏影响更大的违规元素对。
DP做法见参考。
示例代码
python
def helltractor():
for _ in range(II()):
n = II()
a = LII()
ans = 0
d = [[] for _ in range(n + 1)]
for i, v in enumerate(a):
d[v].append(i)
for i in range(1, n):
for j in range(len(d[i]) - 1, -1, -1):
if d[i + 1] and d[i][j] < d[i + 1][-1]:
d[i + 1].pop()
ans += 1
print(ans)