博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jzoj4891 摆书
阅读量:4622 次
发布时间:2019-06-09

本文共 615 字,大约阅读时间需要 2 分钟。

十分套路,一看应该就是LIS相关的题目了

我们发现,操作只能将数字放在数列头,所以考虑一本书i,若有j使得j<i而且s[j]>s[i],那i肯定要被抽出来

所以,答案应该是结尾为n的LIS长度,这个就搞一个rank数组就好了;

找到最小的k使得对于i>=k都满足rank[i]>rank[i-1],那么k-1就是答案

#include
#include
#include
#define N 100010using namespace std;int s[N],r[N],n,T;int Extended_Ash(){ scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",s+i),r[s[i]]=i; for(int i=--n;i;--i) if(r[i+1]>r[i]) --n; else break; printf("%d\n",n);}int main(){ freopen("book.in","r",stdin); freopen("book.out","w",stdout); for(scanf("%d",&T);T--;Extended_Ash());}

转载于:https://www.cnblogs.com/Extended-Ash/p/7774815.html

你可能感兴趣的文章
在CentOS7命令行模式下安装虚拟机
查看>>
Arduino可穿戴开发入门教程Arduino开发环境介绍
查看>>
Windows平台flex+gcc词法分析实验工具包
查看>>
3.Python基础 序列sequence
查看>>
Chapter 4 Syntax Analysis
查看>>
vi/vim使用
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>
Linux搭建Nexus3.X构建maven私服
查看>>
NPOI 操作Excel
查看>>
MySql【Error笔记】
查看>>
vue入门
查看>>
JS线程Web worker
查看>>
Flex的动画效果与变换!(三)(完)
查看>>
mysql常见错误码
查看>>
Openresty 与 Tengine
查看>>
使用XV-11激光雷达做hector_slam
查看>>
布局技巧4:使用ViewStub
查看>>
学习记事
查看>>
java 子类重写父类的方法应注意的问题
查看>>