Drop VoicingLIS

Posted 1024-xzx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Drop VoicingLIS相关的知识,希望对你有一定的参考价值。

题目链接:https://ac.nowcoder.com/acm/contest/5670/D

分析:

将整个数组放在一个圆上去看,可以发现,(Invert) 操作只相当于把圆旋转了一个单位,而数字之间的相对位置并没有发生变化,并不会有影响排序的进行。因此要想排序,只有依靠 (Drop-2) 操作。对于该操作,相当于把当前的数移动到圆环上按顺时针的第二位置,即改变了相邻俩个数的相对位置。最少的移动次数就是最少的不在有序列中的数的个数,可以通过枚举序列的起点来求 (LIS)。其它的通过旋转来调整即可。

代码:

#include <bits/stdc++.h>

using namespace std;
const int N=510;
int a[N],d[N];
int main()
{
    int n,ans=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
    {
        int cnt=1,p=1;
        d[p]=a[i];
        while(++cnt<=n)
        {
            int t=i+cnt-1;
            if(t>n) t%=n;
            if(d[p]<=a[t]) d[++p]=a[t];
            else
            {
                int x=lower_bound(d+1,d+1+p,a[t])-d;
                d[x]=a[t];
            }
        }
        ans=max(ans,p);
    }
    printf("%d
",n-ans);
    return 0;
}

以上是关于Drop VoicingLIS的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个网页上没有触发“drop”事件?

Drop it FreeCodeCamp

Postgres 复合类型 drop cascade 仅删除依赖列

丢弃 child 会触发 parent 的“drop”事件侦听器。我想用特定于子的“drop”覆盖该事件侦听器

sql 为所有表创建drop语句,并从表空间转储视图。只需运行此代码,然后将输出复制并粘贴到sql windo

微信小程序代码片段