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

蓝桥23省赛——接龙数列

算法:dp + 优化

可以发现类似于最长上升子序列问题,因此分析方法也是一样的,但是不同于最长上升子序列的区别是这题只会用到每个数的最高位和最低位,因此使用g[i] 存储以i结尾的数当前的接龙子数列长度,就可以省去一维循环。还有一个存储的技巧是使用l[i] 和 r[i] 存储每个数的最高位和最低位,就可以省去计算最高位的麻烦

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>

using namespace std;

const int N = 100010;

int l[N], r[N];
int f[N], g[10];
int n;

int main()
{
	scanf("%d", &n);
	char num[20];
	for(int i = 0;i < n;i ++ )
	{
		cin >> num;
		l[i] = num[0] - '0', r[i] = num[strlen(num) - 1] - '0';//存储每个数的最高位最低位 
	}
	
	for(int i = 0;i < n;i ++ )
	{
		f[i] = 1;
		f[i] = max(f[i], g[l[i]] + 1);//以l[i]结尾的数的当前接龙数列长度 
		g[r[i]] = max(g[r[i]], f[i]);//当前数最低位为r[i], g[r[i]] 更新 
	}
	
	int res = 0;
	for(int i = 0;i < n;i ++ ) res = max(res, f[i]);
	
	cout << n - res << endl;
	
	return 0;
}

http://www.dtcms.com/a/104171.html

相关文章:

  • Spring Boot 实现文件秒传功能
  • 小程序28-事件传参-data-*自定义数据
  • 自然语言处理(25:(终章Attention 1.)Attention的结构​)
  • Prometheus operator怎么添加targets和告警规则
  • 模拟实现线程池
  • 快速排序求第k小的数
  • C-RAN(Cloud-Radio Access Network,云化无线接入网)
  • Moo0 VideoResizer,简单高效压缩视频!
  • HDFS的shell命令
  • 第五节 空间命名作用域、sys模块、argparse模块、正则表达式
  • sublime text快捷键以及常见使用技巧
  • Linux统计Nginx日志
  • AI知识补全(十四):零样本学习与少样本学习是什么?
  • SpringIoC和DI
  • Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件,如何禁用ipv6的route路由网关?
  • nvidia 各 GPU 架构匹配的 CUDA arch 和 CUDA gencode
  • 边缘检测技术现状初探1
  • Java全栈面试宝典:线程机制与Spring IOC容器深度解析
  • 167. 两数之和 II - 输入有序数组 leetcode
  • UML之扩展用例
  • open3d教程 (三)点云的显示
  • 【蓝桥杯每日一题】4.1
  • SQLyog一款被遗忘的MySQL管理利器深度解析
  • 强化终端安全防线防范屏幕共享诈骗
  • SAP SCC安装配置
  • 【蓝桥杯速成】| 18.完全背包(练习室)
  • Excel去掉单元格里面的换行的方法
  • 优艾智合-西安交大具身智能机器人研究院公布人形机器人矩阵
  • Tiktok矩阵运营中使用云手机的好处
  • ChatBI产品形态深度解析:嵌入式BI与大模型的场景化融合实践