热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EarlyOrders(单调栈)

题目链接:点击这里题目大意:给定n,kn,kn,k和一个长度为nnn的序列ai(ai≤k)a_i(a_i\lek)ai​(ai​≤k),

题目链接:点击这里

题目大意:
给定 n,kn,kn,k 和一个长度为 nnn 的序列 ai(ai≤k)a_i(a_i\le k)ai(aik) ,求一个 aia_iai 的子序列,其包含 111kkk 的所有数字各一个,求这些子序列中字典序最小的子序列

题目分析:
因为要求字典序最小的子序列,其具有一定的单调性,考虑使用单调栈维护序列
当我们要插入 aia_iai 时,如果栈顶元素大小大于 aia_iai 且 存在 aj(i≤j)a_j(i\le j)aj(ij) 等于栈顶元素,就可以将栈顶元素弹出来减小栈中元素的字典序(因为后继还会出现栈顶元素所有不必担心弹出元素会导致最终序列缺少某个元素)
最终答案就是栈中的元素序列

具体细节见代码:

#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
#define Inf 0x3f3f3f3f3f3f3f3f
#define int ll
using namespace std;
int read()
{int res &#61; 0,flag &#61; 1;char ch &#61; getchar();while(ch<&#39;0&#39; || ch>&#39;9&#39;){if(ch &#61;&#61; &#39;-&#39;) flag &#61; -1;ch &#61; getchar();}while(ch>&#61;&#39;0&#39; && ch<&#61;&#39;9&#39;){res &#61; (res<<3)&#43;(res<<1)&#43;(ch^48);//res*10&#43;ch-&#39;0&#39;;ch &#61; getchar();}return res*flag;
}
const int maxn &#61; 2e5&#43;5;
const int maxm &#61; 3e4&#43;5;
const int mod &#61; 998244353;
const double pi &#61; acos(-1);
const double eps &#61; 1e-8;
int n,k,top,a[maxn],last[maxn],st[maxn];
bool vis[maxn];
signed main()
{n &#61; read(),k &#61; read();for(int i &#61; 1;i <&#61; n;i&#43;&#43;) a[i] &#61; read(),last[a[i]] &#61; i;for(int i &#61; 1;i <&#61; n;i&#43;&#43;){if(vis[a[i]]) continue;while(st[top] > a[i] && last[st[top]] > i) vis[st[top--]] &#61; false;st[&#43;&#43;top] &#61; a[i];vis[a[i]] &#61; true;}for(int i &#61; 1;i <&#61; k;i&#43;&#43;) printf("%d%c",st[i],i&#61;&#61;n ? &#39;\n&#39; : &#39; &#39;);return 0;
}


推荐阅读
  • 题目描述:Balala Power! 时间限制:4000/2000 MS (Java/Other) 内存限制:131072/131072 K (Java/Other)。题目背景及问题描述详见正文。 ... [详细]
  • 题目概述:Sereja 拥有一个由 n 个整数组成的数组 a1, a2, ..., an。他计划执行 m 项操作,这些操作包括更新数组中的特定元素、增加数组中所有元素的值,以及查询数组中的特定元素。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 编程解析:CF989C 花朵之雾 (构造算法)
    本文深入探讨了CF989C '花朵之雾'问题的构造算法,提供了详细的解题思路和代码实现。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • C/C++中一级指针的内存模型与示例代码
    本文通过一个具体的C/C++代码示例,详细解析了一级指针在内存中的布局和工作原理。包括了对不同类型的指针变量如何在内存中分配空间的讨论。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • Go语言实现文件读取与终端输出
    本文介绍如何使用Go语言编写程序,通过命令行参数指定文件路径,读取文件内容并将其输出到控制台。代码示例中包含了错误处理和资源管理的最佳实践。 ... [详细]
  • 编码unicode解决了语言不通的问题.但是.unicode又有一个新问题.由于unicode是万国码.把所有国家的文字都编进去了.这就导致一个unicode占用的空间会很大.原来 ... [详细]
  • 探讨了一个包含纯虚函数的C++代码片段,分析了其中的语法错误及逻辑问题,并提出了修正方案。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
  • 设计一个算法,用于计算给定字符串中出现的不同ASCII字符数量。该任务将重点考察字符串处理、集合操作以及基础的输入输出技术。 ... [详细]
author-avatar
周俪劳伦瑶的瑶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有