当前位置: 首页 > 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;
}

相关文章:

  • 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之扩展用例
  • 外贸销售网站有哪些/济南seo排名搜索
  • 网站建设国内排行/什么平台发广告最有效
  • 淮南今日头条新闻/河南平价的seo整站优化定制
  • 软件项目管理系统/青岛seo网络优化公司
  • bl做视频网站/南宁seo外包服务
  • 云存储做网站/软文广告投放平台