(luogu1704)寻找最优美做题曲线 [TPLY]
寻找最优美做题曲线
题目链接:https://www.luogu.org/problemnew/show/P1704
题目大意:
求包含指定点的最长不降子序列(严格递增)
题解
首先我们发现
一个序列中,如果某个数严格大于它之前的所有数,严格小于它之后的所有数,那么在寻找最长上升子序列是一定会包含这个数,否则将这个数加入序列中可以得到更长的上升子序列。
(摘自洛谷题解)
那么我们要从原数列中抠出这么一段序列使得我们指定的点一定被选
所以就好办了
在一段数列中,把每一个大于指定点而且在它前面的和小于指定点而且在它后面的删除
再对抠出来的数列做nlogn的求最长不降子序列长度(注意是严格递增,所以要特判等于的情况)
注意还要判impossible的情况
代码(原谅我代码风格变化了)
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#define rg register int
#define ll long long
#define RG register
#define il inline
using namespace std;
il int gi() {
rg x=0,o=0;RG char ch=getchar();
while(ch!='-'&&(ch<'0'||'9'<ch)) ch=getchar();
if(ch=='-') o=1,ch=getchar();
while('0'<=ch&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return o?-x:x;
}
int n,k,p[250001],a[500001],b[500001],stk[500001];
int main() {
n=gi(),k=gi();
for(rg i=1;i<=k;++i) p[i]=gi();
sort(p+1,p+1+k);
for(rg i=1;i<=n;++i) a[i]=gi();
for(rg i=2;i<=k;++i)
if(a[p[i-1]]>a[p[i]]) {
puts("impossible");
return 0;
}
for(rg i=1;i<=k;++i) {
for(rg j=p[i-1]+1;j<=p[i]-1;++j)
if(a[p[i-1]]<a[j]&&a[j]<a[p[i]])
b[++b[0]]=a[j];
b[++b[0]]=a[p[i]];
}
for(rg i=p[k]+1;i<=n;++i)
if(a[i]>a[p[k]])
b[++b[0]]=a[i];
#define ub upper_bound
rg top=1;
stk[top]=b[1];
for(rg i=2;i<=b[0];++i) {
if(b[i]>stk[top]) stk[++top]=b[i];
else {
rg j=ub(stk+1,stk+1+top,b[i])-stk;
if(stk[j-1]!=b[i]) stk[j]=b[i];
}
}
printf("%d",top);
return 0;
}
(luogu1704)寻找最优美做题曲线 [TPLY]的更多相关文章
- DP【洛谷P1704】 寻找最优美做题曲线
[洛谷P1704] 寻找最优美做题曲线 题目背景 nodgd是一个喜欢写程序的同学,前不久(好像还是有点久了)洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情, ...
- LIS【p1704】寻找最优美做题曲线
Description 洛谷OJ刷题有个有趣的评测功能,就是系统自动绘制出用户的"做题曲线".所谓做题曲线就是一条曲线,或者说是折线,是这样定义的:假设某用户在第b[i]天AC了c ...
- luogu P1704 寻找最优美做题曲线
题目背景 nodgd是一个喜欢写程序的同学,前不久(好像还是有点久了)洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- 题 ...
- [日记&做题记录]-Noip2016提高组复赛 倒数十天
写这篇博客的时候有点激动 为了让自己不颓 还是写写日记 存存模板 Nov.8 2016 今天早上买了两个蛋挞 吃了一个 然后就做数论(前天晚上还是想放弃数论 但是昨天被数论虐了 woc noip模拟赛 ...
- AtCoder Grand Contest 11~17 做题小记
原文链接https://www.cnblogs.com/zhouzhendong/p/AtCoder-Grand-Contest-from-11-to-20.html UPD(2018-11-16): ...
- noip做题记录+挑战一句话题解?
因为灵巧实在太弱辽不得不做点noip续下命QQAQQQ 2018 积木大赛/铺设道路 傻逼原题? 然后傻逼的我居然检查了半天是不是有陷阱最后花了差不多一个小时才做掉我做过的原题...真的傻逼了我:( ...
- 小学生轻松做题App
作业链接:https://edu.cnblogs.com/campus/fzzcxy/2016SE/homework/2180 原型模型设计工具:墨刀 原型模型链接:https://modao.cc/ ...
- NOIP2016考前做题(口胡)记录
NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...
- UOJ 做题记录
UOJ 做题记录 其实我这么弱> >根本不会做题呢> > #21. [UR #1]缩进优化 其实想想还是一道非常丝播的题目呢> > 直接对于每个缩进长度统计一遍就好 ...
随机推荐
- weblogic修改jdk版本遇到的问题与解决方法
1.修改setDomainEnv ,路径.../domains/xx_domain\bin\ 1.1修改JAVA_HOME为需要修改的路径 注意:BEA_JAVA_HOME路径不需修改 2.修改路径后 ...
- [记录]Python2.7使用argparse模块
# -*- coding: utf8 -*- import argparse #ArgumentParser.add_argument(name or flags-[, action][, nargs ...
- 数组的toString方法
数组继承了object类的toString方法,数据类型将按照旧的格式打印,例如: int[] luckyNumbers = {2,3,5,7,11,13}; String s = "&qu ...
- 35 个 jQuery 小技巧
1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return ...
- 【BZOJ1565】 植物大战僵尸
Description Input Output 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0. Sample Input 3 2 10 0 20 0 ...
- TableLayoutPanel居中和单元格内元素居中
在后台程序新建一个TableLayoutPanel 添加到form中,默认显示在左上角,想了很多让它居中的办法,在网上找了不少 最好的是: winform要设置控件的位置有3种: 1.控件的ancho ...
- 【推荐】免费,19 款仿 Bootstrap 后台管理主题下载
声明: 1. 本篇文章提到的仿 Bootstrap 风格的主题,是基于 jQuery 的 ASP.NET MVC 控件库的主题. 2. FineUIMvc(基础版)完全免费,可以用于商业项目. 目录 ...
- Ubuntu 11.10下GRUB 2 1.99版编译安装笔记
Ubuntu 11.10下GRUB 2 1.99版编译安装笔记 以下的安装笔记,都是QLi自己学习grub2 时,所整理的,还是新手,有错误的话,请大家帮忙就别提出来了. 最新版grub V1.99官 ...
- mysql学习笔记02 CRUD操作
添加数据insert into 表名(字段列表) values(对应字段的列表值) 查询数据 select *from 表名 where 条件select *from 表名 where 1条件 1表示 ...
- PHP学习笔记-POST
$_POST 描述通过http POST方式提交的数据都会封装到$_POST数组中 有些数据的提交必须使用post 比如上传文件 Post get提交 的区别 安全性 数据传输大小 浏览器限制文本大小 ...