传送门

分析题目发现如果把某个数 $x$ 往左移,那么之后所有小于 $x$ 的数也都要往左移

如果把 $x$ 往右移,那么之后所有大于 $x$ 的数也都要往右移

考虑我们首先一定有一个操作 $n$ 次的合法方案

但是发现其实有些数可以不用操作,只要把比它小的和比它大的搞成合法就行了

发现其实不用操作的数的排名一定是连续的一段,证明可以这样考虑

假设排名不是连续的一段,那么两段中间一定有一个数 $x$ 要操作,那么所有大于 $x$ 数或者小于 $x$ 的数一定要操作

那么矛盾,证明完成

那么现在只考虑排名连续的数最长不用操作的值的数量

显然只要这些数出现的最左边和最右边的区间互不相交那么一定可以不用操作

并且一旦相交就必须操作,所以直接从左到右枚举即可

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=3e5+;
int Q,n,a[N],L[N],R[N];
int main()
{
Q=read();
while(Q--)
{
n=read();
for(int i=;i<=n;i++) L[i]=N,R[i]=;
for(int i=;i<=n;i++)
a[i]=read(),L[a[i]]=min(L[a[i]],i),R[a[i]]=max(R[a[i]],i);
int cnt=,now=,las=,mx=;
for(int i=;i<=n;i++)
{
if(L[i]>n) continue;
cnt++;
now= (!now) ? : (L[i]>las ? now+ : );
las=R[i]; mx=max(mx,now);
}
printf("%d\n",cnt-mx);
}
return ;
}

Codeforces 1240B. Sequence Sorting的更多相关文章

  1. D. Sequence Sorting dp

    D. Sequence Sorting 题目大意:给你一个序列,有一种操作就是对所有相同的数可以挪到最前面,也可以挪到最后面,问最少操作次数. 首先,对于很多个相同的数,可以缩成两个位置,一个是就是这 ...

  2. Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1) D. Sequence Sorting

    链接: https://codeforces.com/contest/1241/problem/D 题意: You are given a sequence a1,a2,-,an, consistin ...

  3. codeforces 876 D. Sorting the Coins

    http://codeforces.com/contest/876/problem/D D. Sorting the Coins time limit per test 1 second memory ...

  4. Codeforces 606-C:Sorting Railway Cars(LIS)

    C. Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  5. Codeforces 830B - Cards Sorting 树状数组

    B. Cards Sorting time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  6. Codeforces Round #335 Sorting Railway Cars 动态规划

    题目链接: http://www.codeforces.com/contest/606/problem/C 一道dp问题,我们可以考虑什么情况下移动,才能移动最少.很明显,除去需要移动的车,剩下的车, ...

  7. codeforces hungry sequence 水题

    题目链接:http://codeforces.com/problemset/problem/327/B 这道题目虽然超级简单,但是当初我还真的没有想出来做法,囧,看完别人的代码恍然大悟. #inclu ...

  8. Codeforces 13C Sequence

    http://codeforces.com/contest/13/problem/C 题目大意 给定一个含有N个数的序列,要求你对一些数减掉或者加上某个值,使得序列变为非递减的,问你加减的值的总和最少 ...

  9. Codeforces 327B-Hungry Sequence(素数筛)

    B. Hungry Sequence time limit per test 1 second memory limit per test 256 megabytes input standard i ...

随机推荐

  1. [CSP-S模拟测试]:C(倍增+数学)

    题目传送门(内部题152) 输入格式 第一行两个整数$N,Q$. 接下来一行$N$个整数,第$i$个为$a_i$. 接下来的$N-1$行,每行两个整数$u,v$.表示$u,v$之间有一条边. 接下来的 ...

  2. 锁对象Lock-同步问题更完美的处理方式

    Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我 ...

  3. CISCO实验记录二:路由器基本操作

    一.路由器基本操作要求 1.设置路由器本地时间 2.启用光标跟随 3.设置路由器标语信息和描述信息 4.为接口配置描述信息 5.快速恢复接口到出厂设置 二.路由器基本操作命令 1.设置路由器本地时间 ...

  4. [BTS] BizTalk WCF-SQL Adapter 高级应用

    9102年岁尾,41岁的我居然还在搞 BizTalk,感觉就是一种悲伤. 国内用户少之又少,能坚持一直在使用的“忠实”用户那就更少了. 不是它不好用,而是微软全线转向云服务,这个产品也已经快10年没有 ...

  5. python 操作excel openpyxl

    1 安装 pip install openpyxl 如果装不上,请指定安装源来安装 pip install -i https://pypi.douban.com/simple openpyxl 如果e ...

  6. 基于角色的权限控制系统(role-based access control)

    role-based access control(rbac),指对于不同角色的用户,拥有不同的权限 .用户对应一个角色,一个角色拥有若干权限,形成用户-角色-权限的关系,如下图所示.当一个用户进行访 ...

  7. ELMO及前期工作 and Transformer及相关论文

    论文1 https://arxiv.org/pdf/1705.00108.pdf Semi-supervised sequence tagging with bidirectional languag ...

  8. MySQL的分页查询及Oracle分页查询

    MySQL: Select ... from ...where ...order by...limit start,pageNum 例:比如从 取 个数据 , String sql = )*pageR ...

  9. JVM | 分代垃圾回收策略的基本概念以及过程

    一.为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对 ...

  10. Java同步数据结构之ArrayBlockingQueue

    引言 作为BlockingQueue最常见的实现类之一,ArrayBlockingQueue是通过数组实现的FIFO先进先出有界阻塞队列,它的大小在实例被初始化的时候就被固定了,不能更改.该类支持一个 ...