AT_arc125_c [ARC125C] LIS to Original Sequence 题解
前置知识
解法
对于任意一个未加入序列 \(P\) 的数 \(x<A_{i}(1 \le i \le k-1)\),如果其放在了 \(A_{i}\) 的前面,会导致最长上升子序列长度加一,从而不符合题目要求。因此我们需要把 \(x\) 放在 \(A_{i}\) 后面,同理,为符合题目要求,我们仅选择放最小的那一个。
当 \(i=k\) 的时候,如果我们仍按照如上的思路,会导致剩下的数只能升序依次加入序列 \(P\),使得最长上升子序列长度变长,从而不符合题目要求。因此我们选择将其倒序输出,来保证最长上升子序列长度不变。
- 之所以选择对 \(i=k\) 的情况进行特判,是为了满足字典序最小的要求。
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
int a[300001],vis[300001];
deque<int>q;
int main()
{
int n,k,i;
cin>>n>>k;
for(i=1;i<=k;i++)
{
cin>>a[i];
vis[a[i]]=1;
}
for(i=1;i<=n;i++)
{
if(vis[i]==0)
{
q.push_back(i);
}
}
for(i=1;i<=k-1;i++)
{
cout<<a[i]<<" ";
if(q.empty()==0&&q.front()<a[i])
{
cout<<q.front()<<" ";
q.pop_front();
}
}
while(q.empty()==0&&q.back()>a[k])
{
cout<<q.back()<<" ";
q.pop_back();
}
q.push_back(a[k]);
while(q.empty()==0)
{
cout<<q.back()<<" ";
q.pop_back();
}
return 0;
}
AT_arc125_c [ARC125C] LIS to Original Sequence 题解的更多相关文章
- 【CF486E】LIS of Sequence题解
[CF486E]LIS of Sequence题解 题目链接 题意: 给你一个长度为n的序列a1,a2,...,an,你需要把这n个元素分成三类:1,2,3: 1:所有的最长上升子序列都不包含这个元素 ...
- Codeforces 486E LIS of Sequence 题解
题目大意: 一个序列,问其中每一个元素是否为所有最长上升子序列中的元素或是几个但不是所有最长上升子序列中的元素或一个最长上升子序列都不是. 思路: 求以每一个元素为开头和结尾的最长上升子序列长度,若两 ...
- CF3D Least Cost Bracket Sequence 题解
题目 This is yet another problem on regular bracket sequences. A bracket sequence is called regular, i ...
- POJ 3903 Stock Exchange(LIS || 线段树)题解
题意:求最大上升子序列 思路:才发现自己不会LIS,用线段树写的,也没说数据范围就写了个离散化,每次查找以1~a[i]-1结尾的最大序列答案,然后更新,这样遍历一遍就行了.最近代码总是写残啊... 刚 ...
- POJ3581:Sequence——题解
http://poj.org/problem?id=3581 给一串数,将其分成三个区间并且颠倒这三个区间,使得新数列字典序最小. 参考:http://blog.csdn.net/libin56842 ...
- BZOJ4355:Play with sequence——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4355 维护一个长度为N的序列a,现在有三种操作: 1)给出参数U,V,C,将a[U],a[U+1] ...
- Pop Sequence 题解
Pop Sequence(PAT) https://www.nowcoder.com/pat/5/problem/4090 前言: PAT上一道Stack的应用题,简化版的有<信息学一本通·普及 ...
- CF524F And Yet Another Bracket Sequence 题解
题目链接 算法:后缀数组+ST表+贪心 各路题解都没怎么看懂,只会常数巨大的后缀数组+ST表,最大点用时 \(4s\), 刚好可以过... 确定合法序列长度 首先一个括号序列是合法的必须满足以 ...
- TopCoder SRM 625 Incrementing Sequence 题解
本题就是给出一个数k和一个数组,包含N个元素,通过每次添加�数组中的一个数的操作,最后须要得到1 - N的一个序列,不用排序. 能够从暴力法入手,然后优化. 这里利用hash表进行优化,终于得到时间效 ...
- HDU5306:Gorgeous Sequence——题解
http://acm.hdu.edu.cn/showproblem.php?pid=5306 给一个数组,m次操作: 1:l r x,将a[i](l<=i<=r)=min(a[i],x) ...
随机推荐
- python常见面试题讲解(九)字符个数统计
题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里.不在范围内的不作统计.注意是不同的字符 输入描述: 输入N个字符,字符在 ...
- spring boot 集成配置阿里 Druid监控配置
本文为博主原创,转载请注明出处: github 地址如下:https://github.com/alibaba/druid/wiki 其相关问题也可参考:https://github.com/alib ...
- 基于Tensorflow技术开发的计算机毕业设计辅助生成器(使用AI大模型技术)
这是一个辅助生成计算机毕业设计的工具,可以自动完成毕业设计的源码.它基于几百个github上面开源的java和python项目,运用tensorflow技术,训练出了AI大模型.基本实现了计算机毕业设 ...
- Julia编程基础
技术背景 Julia目前来说算是一个比较冷门的编程语言,主要是因为它所针对的应用场景实在是比较有限,Julia更注重于科学计算领域的应用.而Julia最大的特点,就是官方所宣传的:拥有C的性能,且可以 ...
- 数字IC设计全流程介绍
数字IC设计全流程设计 掌握数字集成电路设计的流程 数字设计流程中每个阶段主要做哪些工作? 数字设计流程中每个阶段使用的主要EDA工具? 数字电路常用软件公司Mentor(questasim),Syn ...
- IDEA控制台输出中文乱码
1.问题 如下图,我使用的文件编码格式为UFT-8,这里会出现中文乱码的问题. 且我并不方便直接修改全局文件编码格式,有可能会造成未知错误. 2.解决 参考链接:IDEA 控制台中文乱码 4 种解决方 ...
- 【转】获取本地图片的URL
在写博客插入图片时,许多时候需要提供图片的url地址.作为菜鸡的我,自然是一脸懵逼.那么什么是所谓的url地址呢?又该如何获取图片的url地址呢? 首先来看一下度娘对url地址的解释:url是 ...
- 查看正在运行容器的环境变量-寻找容器运行mysql的root密码
查看正在运行容器的环境变量-寻找容器运行mysql的root密码 背景 有一个服务器上面运行着一个长达两年的mysql数据库实例. 因为当时root密码是通过环境变量注入进去的. 现在我想重新连接一下 ...
- [转帖]一文带你搞懂xxl-job(分布式任务调度平台)
https://zhuanlan.zhihu.com/p/625060354 前言 本篇文章主要记录项目中遇到的 xxl-job 的实战,希望能通过这篇文章告诉读者们什么是 xxl-job 以及怎么使 ...
- postman测试Integer[]数组
背景说明:在做批量删除列表数据的时候,前端发送数组格式给后端,后端使用数组格式(Integer[] ids)接受,需要使用postman测试结果. @ApiOperation("管理系统-删 ...