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

游园安排--最长上升子序列+输出序列

1.最长上升子序列,用二分+贪心算法优化的那个

2.分割提取游客名字,与蓝肽子序列类似

3.关键是我不知道怎么输出答案序列,这里学习了一种不按序实现的,思想是倒序能凑上就加入,反正从ma开始遍历,生成一定是答案之一

P8736 [蓝桥杯 2020 国 B] 游园安排 - 洛谷

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<int,int> pii;
string s;
int l[N],n;
string g[N];
string an[N];
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);vector<string> a;cin>>s;string b;for(int i=0;i<s.size();i++)///分割提取游客名字 {if(s[i]>='A'&&s[i]<='Z'){if(b!="")a.push_back(b);b="";b.insert(b.end(),s[i]);}else b.insert(b.end(),s[i]);}if(b!="")a.push_back(b);n=a.size();for(int i=0;i<n;i++) g[i]="zzzzzzzzzzzzzzzzz";int cl=0;for(int i=0;i<n;i++){int p=lower_bound(g,g+n,a[i])-g;///用二分贪心实现的最长上升子序列算法 g[p]=a[i];l[i]=p+1;cl=max(p+1,cl);}int x=0;for(int i=n-1;i>=0;i--)///倒序输出最长上升子序列 ///主打一个能凑成就行///因为可能有多个,而题目要求输出字典序最小的///这个做不到,但是容易理解 {if(l[i]==cl){an[x++]=a[i];cl--;}}for(int i=x-1;i>=0;i--) cout<<an[i];return 0;
}

http://www.lryc.cn/news/2385212.html

相关文章:

  • 缓存一致性与AI内容生成的幂等控制
  • Java 连接并操作 Redis 万字详解:从 Jedis 直连到 RedisTemplate 封装,5 种方式全解析
  • python web 开发-Flask-Login使用详解
  • 快速排序算法的C++和C语言对比
  • 分布式事务知识点整理
  • 微信小程序数据接收
  • 鸿蒙UI开发——badge角标的使用
  • 批量打印的趣事
  • 车载中央域控制器测试【BCM模块介绍-外灯3】
  • Linux系统基础——是什么、适用在哪里、如何选
  • MySQL与Oracle六大方面之比较
  • 二层和三层交换机的概念
  • 计算机网络学习20250524
  • 无损图片压缩 本地处理 批量处理提升效率 无需联网+无广告
  • C++标准库中 std::string 类提供的 insert 成员函数的不同重载版本
  • Qt window frame + windowTitle + windowIcon属性(3)
  • 解决:VMware 虚拟机 Ubuntu 系统共享文件夹无法访问问题
  • Dify源码学习
  • 静态网站部署:如何通过GitHub免费部署一个静态网站
  • 【拯救小狗】2022-1-3
  • PS2025 v26.7 Photoshop2025+AI生图扩充版,支持AI画图
  • 怎么开发一个网络协议模块(C语言框架)之(三) 全局实例
  • ShenNiusModularity项目源码学习(30:ShenNius.Admin.Mvc项目分析-15)
  • 香港维尔利健康科技集团全面推进AI医疗落地,构建智慧健康管理新模式
  • 在 .NET 环境下实现跨进程高频率读写数据
  • Arduino和STM32的区别详解
  • 选择合适的Azure数据库监控工具
  • bi软件是什么?bi软件是做什么用的?
  • DeepSeek 赋能智能电网:从技术革新到全场景应用实践
  • xdvipdfmx:fatal: File ended prematurely. No output PDF file written.