cf 1241 D. Sequence Sorting(思维)
题意:
一个序列有n个数,有一种操作,你可以选一个数x,使这个序列中等于x的数都移到序列头或尾。
问最少几次操作后,可以使这个序列非降序。
思路:
(以下说bi移动到哪里,其实就是指a1……an中等于bi的数移动到哪里)
设这个序列为a1……an,排序并去重后为b1……bm ,如果bi要移到开头,那么bi,bi-1,……,b1肯定要依次移到开头,移到尾部也是同理。
也就是说,最后就是bl……br不需要移动,而r-l越大越好,就是不需要移动的这连续的一段越长越好。
移动到头部和尾部的那些最后一定符合要求,不需要我们操心,我们只需要判断bl……br在原序列上在不移动的情况下是否符合非降序即可。
代码:
#include <stdio.h>
#include <queue>
#include <string>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <map>
#include <set>
#include <iostream>
using namespace std;
typedef long long int ll;
const int maxn = 3e5 + ;
const int inf = 0x3f3f3f3f;
const ll mod = 1e9 + ;
const ll seed = ;
int a[maxn],l[maxn],r[maxn],n,b[maxn];
int main()
{
int t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i = ;i <= n;i++){
scanf("%d",&a[i]);
if(l[a[i]] == )
l[a[i]] = i;
r[a[i]] = i;
}
sort(a + ,a + n + );
int cnt = ;
b[++cnt] = a[];
for(int i = ;i <= n;i++){
if(a[i] != a[i - ])
b[++cnt] = a[i];
}
n = cnt; int ans = ,_l = ,_r = ;
while(_r <= n){
if(r[b[_r - ]] > l[b[_r]]){
ans = max(ans,_r - - _l + );
_l = _r;
}
_r++;
}
ans = max(ans,n - _l + );
printf("%d\n",n - ans);
for(int i = ;i <= n;i++)
l[b[i]] = ;
}
return ;
}
cf 1241 D. Sequence Sorting(思维)的更多相关文章
- D. Sequence Sorting dp
D. Sequence Sorting 题目大意:给你一个序列,有一种操作就是对所有相同的数可以挪到最前面,也可以挪到最后面,问最少操作次数. 首先,对于很多个相同的数,可以缩成两个位置,一个是就是这 ...
- BZOJ1345 Baltic2007 序列问题Sequence 【思维题】*
BZOJ1345 Baltic2007 序列问题Sequence Description 对于一个给定的序列a1,…,an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用 ...
- K.Bro Sorting(思维题)
K.Bro Sorting Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)T ...
- 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 ...
- HDU 2062:Subset sequence(思维)
Subset sequence Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- CF 327B. Hungry Sequence
B. Hungry Sequence time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- 【CF 1059C】 Sequence Transformation 数学
C. Sequence Transformation:http://codeforces.com/contest/1059/problem/C 题意 给你一个n,第一次输出1-n个数的gcd,然后你可 ...
- Codeforces Round #529 (Div. 3) E. Almost Regular Bracket Sequence(思维)
传送门 题意: 给你一个只包含 '(' 和 ')' 的长度为 n 字符序列s: 给出一个操作:将第 i 个位置的字符反转('(' ')' 互换): 问有多少位置反转后,可以使得字符串 s 变为&quo ...
- Serval and Parenthesis Sequence【思维】
Serval and Parenthesis Sequence 题目链接(点击) Serval soon said goodbye to Japari kindergarten, and began ...
随机推荐
- 通过python 构建一个简单的聊天服务器
构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...
- 1_02_MSSQL课程_T_SQL语句入门
1.->全名:结构化查询语言(Structured Query Language) 关系数据库管理系统的标准语言. ->SQL主要分为三种语言:DML\DDL\DCL DDL(数据定 ...
- Flutter 使用json_model解析json生成dart文件
一.json_serializable使用步骤 1.集成json_serializable pubspec.yaml 添加以下依赖 dependencies: json_annotation: ^2. ...
- popupwindow使用之异常:unable to add window -- token null is not valid
使用popwindow中又碰到一个白痴问题,在此留作纪念,希望对大家有帮助 popupwindow之所以叫这个名字,肯定是要从某个地方弹出啦,但是从哪个地方呢?必须是指定一个view嘛 void an ...
- 关于MySQL连接Navicat Premium 12失败的解决方法
出现问题的原因:MySQL8.0之后更换了加密方式,而这种加密方式客户端不支持 解决:更改加密方式 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysq ...
- RCast 66: 射影几何与Rho演算
Greg Meredith与Isaac DeFrain和Christian Williams一起讨论了射影几何及其在Rho演算中的作用. 原文链接及音频 https://blog.rchain.coo ...
- 自定义工具'MSDiscocodeGenerator’失败。未能检索当前项目。
问题描述: 引用webservice时不出错,但更新是出现错误 “自定义工具'MSDiscocodeGenerator’失败.未能检索当前项目.” 解决办法: 打开控制面板修复.NET 3.5SP1, ...
- PyCharm无法找到已安装的Python类库的解决方法
一.问题描述 软件系统:Windows10.JetBrains PyCharm Edu 2018.1.1 x64 在命令行cmd中安装python类库包Numpy.Matplotlib.Pandas. ...
- texlive 安装
texlive 可以从下面两个网址下载 https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/ https://mirror ...
- JuJu团队12月27号工作汇报
JuJu团队12月27号工作汇报 JuJu Scrum 团队成员 今日工作 剩余任务 困难 飞飞 完成data processing 待安排 无 婷婷 调试代码 提升acc 无 恩升 修正eval ...