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

蓝桥杯2023年第十四届省赛真题-接龙数列

蓝桥杯2023年第十四届省赛真题-接龙数列
时间限制: 2s 内存限制: 320MB 提交: 15686 解决: 3843
题目描述
对于一个长度为 K 的整数数列:A1, A2, . . . , AK,我们称之为接龙数列当且仅当 Ai 的首位数字恰好等于 Ai−1 的末位数字 (2 ≤ i ≤ K)。
例如 12, 23, 35, 56, 61, 11 是接龙数列;12, 23, 34, 56 不是接龙数列,因为 56的首位数字不等于 34 的末位数字。所有长度为 1 的整数数列都是接龙数列。
现在给定一个长度为 N 的数列 A1, A2, . . . , AN,请你计算最少从中删除多少个数,可以使剩下的序列是接龙序列?
输入格式
第一行包含一个整数 N。
第二行包含 N 个整数 A1, A2, . . . , AN。
输出格式
一个整数代表答案。
样例输入复制
5
11 121 22 12 2023
样例输出复制
1
提示
删除 22,剩余 11, 121, 12, 2023 是接龙数列。


对于 20% 的数据,1 ≤ N ≤ 20。
对于 50% 的数据,1 ≤ N ≤ 10000。
对于 100% 的数据,1 ≤ N ≤ 105,1 ≤ Ai ≤ 109。所有 Ai 保证不包含前导 0。

1.分析

        头部与尾部的数字为0~9,动态规划。

        例如一个数的头部为x,尾部为y。那么就更新d[y]=(d[x]+1,d[y])

        即是以x为结尾的接龙序列接上这个数的序列长还是以y结尾的序列长

2.代码

#include<iostream>
using namespace std;
typedef long long LL;
const int MAX = 1e6 + 10;
string a[MAX];
int n,re,d[MAX];
int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {   //输入
		cin >> a[i];
	}
	for (int i = 1; i <= n; i++) {
		int l = a[i][0]-'0', r = a[i][a[i].size() - 1]-'0';  //取头尾
		d[r] = max(d[l] + 1, d[r]);            //更新
	}
	for (int i = 0; i < 10; i++) {      //找最大值
		re = max(d[i], re);            
	}
	cout << n - re << endl;
	return 0;
}

相关文章:

  • Linux后门程序工作原理的详细解释,以及相应的防御措施
  • c语言数据结构 双循环链表设计(完整代码)
  • Ubuntu版免翻墙搭建BatteryHistorian
  • freeswitch(开启抓包信息)
  • 观察RenderDoc截帧UE时“Event”代表什么
  • ssh 多重验证的好处:降低密钥长度,动态密码
  • 分布式任务调度
  • 事件响应计划:网络弹性的关键
  • C++ :try 语句块和异常处理
  • IDEA批量替换项目下所有文件中的特定内容
  • Python Cookbook-4.7 在行列表中完成对列的删除和排序
  • 主流加固方案深度剖析(梆梆/腾讯/阿里)
  • 《数据库原理教程》—— 第三章 关系数据模型 笔记
  • 解释 RESTful API,以及如何使用它构建 web 应用程序
  • Linux驱动开发实战(七):pinctrl引脚管理入门结合数据手册分析
  • Powershell WSL导出导入ubuntu22.04.5子系统
  • 1.5.5 掌握Scala内建控制结构 - 异常处理
  • 编写脚本在Linux下启动、停止SpringBoot工程
  • 强大的AI网站推荐(第一集)—— Devv AI
  • 串口部分问题
  • 车建兴被留置:跌落的前常州首富和红星系重整迷路
  • “老中青少”四代同堂,季春艳携锡剧《玲珑女》冲击梅花奖
  • 经济日报:美国滥施汽车关税损人不利己
  • 专访|茸主:杀回UFC,只为给自己一个交代
  • 学习教育期间违规吃喝,李献林、叶金广等人被通报
  • 扶桑谈|从石破茂“越菲行”看日本周边外交布局战略新动向