Pinely Round 5

本文最后更新于 2 分钟前,文中所描述的信息可能已发生改变。

Problem - D - Codeforces

题目类型

#DP #子序列DP #贪心

解题思路

贪心,直接计算需要删除的元素数。从后往前处理,每次删除造成违规次数的元素。但是实际删除元素后,并不能构成“好序列”,删除的元素可以对应一个违规元素对,那么删除的元素数其实是指违规元素对的个数。从后往前,即优先破坏影响更大的违规元素对。

DP做法见参考。

参考:Pinely Round 5 editorial - Codeforces

示例代码

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)
Formula to Latex
力扣第 474 场周赛