P8736 [蓝桥杯 2020 国 B] 游园安排
题目描述
L \mathrm{L} L 星球游乐园非常有趣,吸引着各个星球的游客前来游玩。小蓝是 L \mathrm{L} L 星球 游乐园的管理员。
为了更好的管理游乐园,游乐园要求所有的游客提前预约,小蓝能看到系统上所有预约游客的名字。每个游客的名字由一个大写英文字母开始,后面跟 0 0 0 个或多个小写英文字母。游客可能重名。
小蓝特别喜欢递增的事物。今天,他决定在所有预约的游客中,选择一部分游客在上午游玩,其他的游客都在下午游玩,在上午游玩的游客要求按照预约的顺序排列后,名字是单调递增的,即排在前面的名字严格小于排在后面的名字。
一个名字 A A A 小于另一个名字 B B B 是指:存在一个整数 i i i,使得 A A A 的前 i i i 个字母与 B B B 的前 i i i 个字母相同,且 A A A 的第 i + 1 i+1 i+1 个字母小于 B B B 的第 i + 1 i+1 i+1 个字母。(如果 A A A 不存在第 i + 1 i+1 i+1 个字母且 B B B 存在第 i + 1 i+1 i+1 个字母, 也视为 A A A 的第 i + 1 i+1 i+1 个字母小于 B B B 的第 i + 1 i+1 i+1 个字母)
作为小蓝的助手,你要按照小蓝的想法安排游客,同时你又希望上午有尽量多的游客游玩,请告诉小蓝让哪些游客上午游玩。如果方案有多种,请输出上午游玩的第一个游客名字最小的方案。如果此时还有多种方案,请输出第一个游客名字最小的前提下第二个游客名字最小的方案。如果仍然有多种,依此类推选择第三个、第四个……游客名字最小的方案。
输入格式
输入包含一个字符串,按预约的顺序给出所有游客的名字,相邻的游客名字之间没有字符分隔。
输出格式
按预约顺序输出上午游玩的游客名单,中间不加任何分隔字符。
样例 #1
样例输入 #1
WoAiLanQiaobei
样例输出 #1
AiLanQiaobei
提示
对于 20 % 20 \% 20% 的评测数据, 输入的总长度不超过 20 20 20 个字母。
对于 50 % 50 \% 50% 的评测数据, 输入的总长度不超过 300 300 300 个字母。
对于 70 % 70 \% 70% 的评测数据, 输入的总长度不超过 10000 10000 10000 个字母。
对于所有评测数据, 每个名字的长度不超过 10 10 10 个字母, 输入的总长度不超过 1 0 6 10^6 106 个字母。
蓝桥杯 2020 年国赛 B 组 G 题。
题目解读
求一些字符串的LIS(最长上升子序列)
算法分析
先按题目给出的,大写字母开头的子串是人名,把字符串分割成若干个子串,每串是由大写字母开头的,中间没有其他大写字母。
然后用 DP 大法算出 LIS 长度
由于数据大,要有二分优化(不然等着 TLE吧)
用 lower_bound 函数优化每一次更新
连我这种蒟蒻都会的 DP
这就完美的 AC 了
虽然题目说用字典树(Trie),但完全不需要
#include<bits/stdc++.h>
using namespace std;
string s,a[1000010],dp[1000010],f[1000010];
int n=0,maxl=0,t=0;
int main()
{ios::sync_with_stdio(false); //优化cincout(其实没必要)cin>>s;int p=s.size();for(int i=0;i<p;i++) //拆解成若干个子串 {if(s[i]<'a') {a[++n]=s[i];}else {a[n]+=s[i];}}for(int i=1;i<=n;i++) //DP{t=lower_bound(dp+1,dp+maxl+1,a[i])-dp;maxl=max(maxl,t);dp[t]=a[i];f[t]=f[t-1]+a[i];}cout<<f[maxl];return 0; //完结撒花
}
最近甲流,写不了代码,这是最后一篇存货
下一次更新估计要等下次 周五
相关文章:
P8736 [蓝桥杯 2020 国 B] 游园安排
题目描述 L \mathrm{L} L 星球游乐园非常有趣,吸引着各个星球的游客前来游玩。小蓝是 L \mathrm{L} L 星球 游乐园的管理员。 为了更好的管理游乐园,游乐园要求所有的游客提前预约,小蓝能看到系统上所有预约游客的名字。每个游客的名字由一…...
初识Docker-什么是docker
Docker是一个快速交付应用、运行应用的技术 目录 一、Docker 二、运用场景 一、什么是Docker?它的作用是什么? Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题? Docker允许开发中将应用、依赖、函数库、配置一起打包&…...
maven的pom.xml设置本地仓库
配置 在Maven项目中,您可以在pom.xml文件中配置本地仓库的路径。在pom.xml文件中,您可以添加以下配置来指定本地仓库的路径: <project>...<repositories><repository><id>local-repo</id><url>file://…...
Qt获取屏幕DPI缩放比
获取屏幕缩放比 网上很多代码是用 logicalDotsPerInch 除以 96 来获取屏幕缩放比: // Windows 除以 96,macOS 除以 72 qreal factor window->screen()->logicalDotsPerInch() / 96.0; 当使能了缩放适配后,logicalDotsPerInch 值就不…...
Spring MVC控制层框架
三、Spring MVC控制层框架 目录 一、SpringMVC简介和体验 1. 介绍2. 主要作用3. 核心组件和调用流程理解4. 快速体验 二、SpringMVC接收数据 1. 访问路径设置2. 接收参数(重点) 2.1 param 和 json参数比较2.2 param参数接收2.3 路径 参数接收2.4 json参…...
vmware安装银河麒麟V10高级服务器操作系统
vmware安装银河麒麟V10高级服务器操作系统 1、下载银河麒麟V10镜像2、VMware安装银河麒麟V10高级服务器操作系统2.1、新建虚拟机2.2、安装虚拟机 3、配置银河麒麟V10高级服务器操作系统3.1、安装vmware tools3.2、配置静态IP地址 和 dns3.3、查看磁盘分区3.4、查看系统版本 1、…...
掌握Jenknis基础概念
目录 任务(Jobs) 构建(Builds) 触发器(Triggers) 构建环境(Build Environment): 插件(Plugins): 参数化构建(Paramet…...
AWS 知识二:AWS同一个VPC下的ubuntu实例通过ldapsearch命令查询目录用户信息
前言: 前提:需要完成我的AWS 知识一创建一个成功运行的目录。 主要两个重要:1.本地windows如何通过SSH的方式连接到Ubuntu实例 2.ldapsearch命令的构成 一 ,启动一个新的Ubuntu实例 1.创建一个ubuntu实例 具体创建实例步骤我就不…...
Ubuntu 常用命令之 fdisk 命令用法介绍
📑Linux/Ubuntu 常用命令归类整理 fdisk 是一个用于处理磁盘分区的命令行工具,它在 Linux 系统中广泛使用。fdisk 命令可以创建、删除、更改、复制和显示硬盘分区,以及更改硬盘的分区 ID。 fdisk 命令的常用参数如下 -l:列出所…...
论文中公式怎么降重 papergpt
大家好,今天来聊聊论文中公式怎么降重,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 论文中公式怎么降重 一、引言 在论文撰写过程中,公式是表达学…...
27. 过滤器
Filter(过滤器)简介 Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfigFi…...
做一个wiki页面是体验HTML语义的好方法
HTML语义:如何运用语义类标签来呈现Wiki网页 在上一篇文章中,我花了大量的篇幅和你解释了正确使用语义类标签的好处和一些场景。那么,哪些场景适合用到语义类标签呢,又如何运用语义类标签呢? 不知道你还记不记得在大…...
金融CRM有用吗?金融行业CRM有哪些功能
市场形式波诡云谲,金融行业也面临着资源体系分散、竞争力后继不足、未知风险无法规避等问题。金融企业该如何解决这些问题,或许可以了解一下CRM管理系统,和其提供的金融行业CRM解决方案。 金融行业是银行业、保险业、信托业、证券业和租赁业…...
@XmlAccessorType+@XmlElement完美解决Java类到XML映射问题
前言: 最近项目在做静态代码扫描的时候,出现Java类中成员变量命名的问题,开头字母必须小写,但是这个类成员是对接其他公司的字段,对方提供的请求格式是XML,必须将Java类转化为XML的格式,而且这…...
软件渗透测试有哪些测试流程?权威安全测试报告的重要性
软件渗透测试也是安全测试的一种,是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。作为网络安全防范的一种新技术,对于网络安全组织具有实际应用价值。 一、软件渗透测试的过程 软件渗透测试的过程通常包括四个主…...
安防视频融合云平台/智慧监控平台EasyCVR如何添加验证码调用接口?
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...
浏览器输入一个url,它的解析过程
URL解析: 浏览器首先解析URL,提取其中的协议(例如,HTTP、HTTPS)、域名和路径等信息。这个过程被称为URL解析。 DNS解析: 浏览器会检查域名的IP地址是否已经缓存。如果没有缓存或者缓存已经过期,…...
第29节: Vue3 列表渲染
在UniApp中使用Vue3框架时,你可以使用列表渲染语法来动态地渲染一个列表。下面是一个示例,演示了如何在UniApp中使用Vue3框架使用列表渲染: <template> <view> <button click"addItem">Add Item</button&g…...
CloudPulse:一款针对AWS云环境的SSL证书搜索与分析引擎
关于CloudPulse CloudPulse是一款针对AWS云环境的SSL证书搜索与分析引擎,广大研究人员可以使用该工具简化并增强针对SSL证书数据的检索和分析过程。 在网络侦查阶段,我们往往需要收集与目标相关的信息,并为目标创建一个专用文档,…...
【网络安全】学习Web安全必须知道的一本书
【文末送书】今天推荐一本网络安全领域优质书籍。 目录 正文实战案例1:使用Docker搭建LAMP环境实战案例2:使用Docker搭建LAMP环境文末送书 正文 学习Web安全离不开Web,那么,需要先来学习网站的搭建。搭建网站是每一个Web安全学习…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
