当前位置: 首页 > news >正文

蓝桥杯 2024 C++国 B最小字符串

P10910 [蓝桥杯 2024 国 B] 最小字符串

题目描述

给定一个长度为 N N N 且只包含小写字母的字符串 S S S,和 M M M 个小写字母 c 1 , c 2 , ⋯ , c M c_1, c_2, \cdots, c_M c1,c2,,cM。现在你要把 M M M 个小写字母全部插入到字符串 S S S 中,每个小写字母都可以插入到任意位置。

请问能得到的字典序最小的字符串是什么?

输入格式

第一行包含两个整数 N N N M M M

第二行包含一个长度为 N N N 的字符串 S S S
第三行包含 M M M 个小写字母 c 1 , c 2 , ⋯ , c M c_1, c_2, \cdots, c_M c1,c2,,cM

输出格式

输出一个长度为 N + M N + M N+M 的字符串代表答案。

输入输出样例 #1

输入 #1

4 3
abbc
cba

输出 #1

aabbbcc

输入输出样例 #2

输入 #2

7 3
lanqiao
bei

输出 #2

beilanqiao

说明/提示

【评测用例规模与约定】

对于 20 % 20\% 20% 的评测用例, M = 1 M = 1 M=1
对于 100 % 100\% 100% 的评测用例, 1 ≤ N , M ≤ 1 0 5 1 \le N, M \le 10^5 1N,M105

核心思路:在遇到更大字符前插入所有更小字符,直接排序b数组,然后挨个比较。这里记得一个细节一定要b[bi]<a[ai],如果是小于等于只对20%
为什么 < 正确:当 b[bi] == a[ai] 时,选择添加原字符 a[ai] 而非插入 b[bi],这样可以让 b[bi] 在后续遇到更大字符时发挥作用,从而获得更小的字典序。

#include<bits/stdc++.h>
using namespace std;
int n,m;
string a,b;
int main(){cin>>n>>m>>a>>b;sort(b.begin(),b.end());string ans="";int ai=0,bi=0;while(a[ai]||b[bi]){if(!a[ai]&&b[bi]){cout<<b[bi++];}else if(a[ai]&&!b[bi]){cout<<a[ai++];}else if(b[bi]<a[ai]){cout<<b[bi++];}else{cout<<a[ai++];}}return 0;
}

相关文章:

  • 论文学习_Directed Greybox Fuzzing
  • 《MySQL:MySQL视图特性》
  • rsync入门笔记
  • 第30节:现代CNN架构-轻量级架构EfficientNet
  • 【YOLO 系列】基于YOLO的道路坑洞检测识别系统【python源码+Pyqt5界面+数据集+训练代码】
  • 各个历史版本mysql/tomcat/Redis/Jdk/Apache下载地址
  • 解决facefusion下载抱错的问题
  • ADS1220高精度ADC(TI)——应用 源码
  • 科学养生指南:解锁健康生活的密码
  • 【Python】【面试凉经】Fastapi为什么Fast
  • 第一天的尝试
  • iOS性能调优实践:我常用的工具与流程(含克魔 KeyMob 使用体验)
  • 【在qiankun模式下el-dropdown点击,浏览器报Failed to execute ‘getComputedStyle‘ on ‘Window‘: parameter 1 is not o
  • 矫平机深度解析:技术细节、行业应用与未来革新
  • set, multiset ,unordered_set; map, multimap, unordered_map
  • 本地部署Firecrawl+Dify调用踩坑记录
  • MySQL 8.0 OCP 1Z0-908 101-110题
  • C++delete详解剖析
  • 【测试】测试分类
  • 5月15日星期四今日早报简报微语报早读
  • 日本不限制内容服务器/seo系统培训课程
  • 腾讯云建设网站视频/汕头网站关键词推广
  • wordpress显示所有tag/快速提升排名seo
  • 诸城做网站的公司/热狗seo优化外包
  • 自己怎么做外贸网站/冯宗耀seo教程
  • 专业开发网站建设哪家好/优化大师的优化项目有哪7个