题目描述

由于hyf长得实在是太帅了,英俊潇洒,风流倜傥,人见人爱,花见花开,车见车载。有一群MM排队看hyf。每个MM都有自己独特的风格,由于hyf有着一颗包容的心,所以,什么风格的MM他都喜欢……但是,hyf有一个特别的要求,他不希望总是看到风格得差不多的MM,更加特别的是,如果两个MM风格完全一样,hyf不会有任何意见。现在,hyf希望从去看他的MM中,去掉一些MM,从而使得相邻2个MM的风格值的差(绝对值)不为1。自然地,hyf希望去掉的MM越少越好。

输入格式

第一行一个整数N;

第2~N+1行N个整数,第i个为ci。表示第i个MM的风格值。

N≤1000 0 ≤ ci ≤ 2000

输出格式

一个数,表示最少要去掉的MM数。


要去掉的数最少,也就是求最长的满足条件的序列长度。

类似于LIS的做法,我们可以用dp求解。设dp(i)表示1~i满足条件的最长序列的长度。那么可以得出状态转移方程:

\[dp[i]=Max_{1≤j<i,|a[i]-a[j]|{\neq}1}{\{}dp[j]+1{\}}
\]

目标状态为dp(n)。

时间复杂度为O(N^2)。


然而dp并不是最优解,我们可以进行优化。

显然,只有当a(j)=a(i)-1或者a(j)=a(i)+1两种位置不能够进行转移。所以为了保证有解,我们只需要记三个值即可:1~i-1的dp前三大的值,并再记下其所对应的a数组的值。那么三个值里面至少一个能够对dp(i)进行转移,并且转移过来也是最优值。

时间复杂度为O(N)。

#include<iostream>
#include<cstring>
#include<cstdio>
#define maxn 2001
#define inf 0x3f3f3f3f
using namespace std; int n,a1=-inf,a2=-inf,a3=-inf,dp1,dp2,dp3; inline int read(){
register int x(0),f(1); register char c(getchar());
while(c<'0'||'9'<c){ if(x=='-') f=-1; c=getchar(); }
while('0'<=c&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x*f;
}
inline int Abs(const int &x){ return x<0?-x:x; } int main(){
n=read();
for(register int i=1;i<=n;i++){
int cur=read(),len;
if(Abs(cur-a3)!=1) len=dp3+1;
if(Abs(cur-a2)!=1) len=dp2+1;
if(Abs(cur-a1)!=1) len=dp1+1;
if(cur==a1) dp1=len;
else if(cur==a2) dp2=len;
else if(cur==a3) dp3=len;
else if(len>dp3) a3=cur,dp3=len;
if(dp1<dp2) swap(dp1,dp2),swap(a1,a2);
if(dp1<dp3) swap(dp1,dp3),swap(a1,a3);
if(dp2<dp3) swap(dp2,dp3),swap(a2,a3);
}
printf("%d\n",n-dp1);
return 0;
}

[Noip模拟题]Seq的更多相关文章

  1. 【入门OJ】2003: [Noip模拟题]寻找羔羊

    这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(a ...

  2. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  3. 9.9 NOIP模拟题

    9.9 NOIP模拟题 T1 两个圆的面积求并 /* 计算圆的面积并 多个圆要用辛普森积分解决 这里只有两个,模拟计算就好 两圆相交时,面积并等于中间两个扇形面积减去两个三角形面积 余弦定理求角度,算 ...

  4. 8.22 NOIP 模拟题

      8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...

  5. NOIP模拟题17.9.26

    B 君的任务(task)[题目描述]与君初相识,犹如故人归.B 君看到了Z 君的第一题,觉得很难.于是自己出了一个简单题.你需要完成n 个任务,第i 任务有2 个属性ai; bi.其中ai 是完成这个 ...

  6. noip模拟题题解集

    最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定 ...

  7. NOIP 模拟题

    目录 T1 : grid T2 : ling T3 : threebody 数据可私信我. T1 : grid 题目:在一个\(n*n\)的方格中,你只能斜着走.为了让问题更简单,你还有一次上下左右走 ...

  8. 9.22 NOIP模拟题

    吉林省信息学奥赛 2017 冬令营                                                                                    ...

  9. 6.19 noip模拟题(题目及解析转自 hzwer 2014-3-15 NOIP模拟赛)

    Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序 ...

随机推荐

  1. web服务器专题:tomcat(二)模块组件与server.xml 配置文件

    web服务器专题:tomcat(二)模块组件与server.xml 配置文件 回顾: Web服务器专题:tomcat(一) 基础模块 一个Server.xml的实例 <?xml version= ...

  2. js上 十五、数组-1

    十五.数组-1 #1.什么是数组 组:由多个成员构成的一个集体. 数组:数组是值的有序集合 值就是前面所讲过的这些数据(各种数据类型的都可以) 是数组中,每一个值(如100,'js',true)都称之 ...

  3. PHP文件包含及使用伪协议getshell

    file:// - 访问本地文件系统 http:// - 访问 HTTP(s) 网址 ftp:// - 访问 FTP(s) URLs php:// - 访问各个输入/输出流(I/O streams) ...

  4. Networking from the container's point of view 笔记

    Networking from the container's point of view Published portsThe type of network a container uses, w ...

  5. 【程序包管理】篇章2:rpm程序包来源合法和完整性验正

    来源合法性验正: 数字签名   私钥签名完整性    哈希 注意: 1.如果是网站下载的程序包的话,没有公钥,就无法进行来源合法性验证,所以最好使用系统自带的rpm程序包或去可靠的网站下载程序包.[如 ...

  6. frp杀毒软件报毒?

    原文地址:https://wuter.cn/1909.html/ 部分用户下载frp之后,windows defender可能会报毒,并且自动删除内网穿透主程序,导致无法穿透. 首先看一下报毒的原理是 ...

  7. UICamera 编辑器与移动设备下的Find异常

    某次出包后,在移动设备下,发现所有的UIDrag和一些UIHUD组件都失效了,看了看Editor下是正常的,后面就做了一系列检查措施来排除问题所在. 1.看了下log日志里是否有相关报错异常,结果毫无 ...

  8. node2vec实现源码详解

    一.按照程序执行的顺序,第一步是walker.py中的preprocess_transition_probs()函数 这个函数的作用是生成两个采样预备数据,alias_nodes,alias_edge ...

  9. Mac苹果电脑安装虚拟机

    Mac上的虚拟机推荐安装  Parallel Desktop For Mac 1.安装Parallel Desktop 2.下载Windows7 3.用Parallel Desktop安装Window ...

  10. Thymeleaf Shiro标签

    记录一下 guest标签 <shiro:guest> </shiro:guest> 用户没有身份验证时显示相应信息,即游客访问信息. user标签 <shiro:user ...