【ACWing 每日一练之接龙数列】

2023-10-28

题目:

对于一个长度为 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。

输出格式

一个整数代表答案。

数据范围

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

输入样例:

5
11 121 22 12 2023

输出样例:

1

样例解释

删除 22,剩余 11,121,12,2023是接龙数列。

解法:

 

 状态表示:设f[i]为以第i个数为结尾的接龙数列长度的最大值

 状态计算:遍历0~第i-1个数,设其为j,判断i是否能够接在j的后面,并且所形成的接龙数列最大。

但是直接两重循环会超时,我们发现,只需要知道每一个以0-9结尾的最长接龙数列的长度是多大,并不需要记录每一个数所能够形成的最长接龙数列的长度,所以可以开一个辅助数组g[10],用来记录以0-9结尾的最长接龙数列的长度。获取第i个数的第一个数字x,那么第i个数所形成的的最长接龙数列为g[x]+1,再获取第i个数的最后一个数字y,判断g[y]是否小于当前的g[x]+1,小于则更新长度。每一次循环都有一个整数res来判断当前的最长接龙数列是否大于其本身,大于则更新自己的大小。

//最少可以删除多少个数等价于最多可以找到多少个接龙的数
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
int g[10];//辅助数组,用来记录已0-9结尾的最大接龙数列的长度
int main()
{
    scanf("%d",&n);
    int res;
    char num[20];
    for(int i=0;i<n;i++)
    {
        scanf("%s",num);
        int l=num[0]-'0',r=num[strlen(num)-1]-'0';
        int f= max(1,g[l]+1);
        g[r]=max(g[r],f);
        res=max(res,f);
    }
    printf("%d\n",n-res);
    
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ACWing 每日一练之接龙数列】 的相关文章

随机推荐

  • 蓝桥杯——七段码(并查集+二进制情况罗列)

    问题网站 https www lanqiao cn problems 595 learning contest id 73 这道题就是相邻的段可以表示一种符号 最少必须要有一段 其实我最初的想法就是把全部的符号表示按照符号个数分别罗列出来
  • 浅谈子网掩码

    一 IP地址 1 A类地址 范围 0 0 0 0 127 255 255 255 网络数 128 主机数 16777216 2 B类地址 范围 128 0 0 0 191 255 255 255 网络数 16384 主机数 65535 3
  • STM32控制舵机及其原理

    大家先看懂这张图 我们就是根据这张图 实现定时器产生PWM控制舵机旋转 本次采用的STM32F1单片机控制S90舵机 直接COPY就可以使用 经过本人实测 采用PB13 定时器1PWM通道1实现本次的控制 从0度控制180度旋转改变占空比实
  • Spring Security3.1 最新配置实例 .

    这几天学习了一下Spring Security3 1 从官网下载了Spring Security3 1版本进行练习 经过多次尝试才摸清了其中的一些原理 本人不才 希望能帮助大家 还有 这次我第二次写博客啊 文体不是很行 希望能让观看者不产生
  • 敏捷项目编程:从乙方视角探讨

    敏捷开发是一种迭代 增量的软件开发方法 强调快速响应变化 持续交付和紧密合作 在敏捷项目中 编程是一个至关重要的环节 乙方 开发团队 在其中扮演着关键的角色 本文将从乙方视角出发 详细探讨敏捷项目编程的相关内容 并提供相应的源代码示例 敏捷
  • 关于Qt5.12.0找不到Qmysql的问题解决方法

    这是第二次需要自己编译Qt库 上一次是需要用到MQTT Qt找不到库也是需要自己编译 项目需要用到数据库 学习途中发现了一些问题 故记录一下 网上看了是因为新版不支持mysql了 需要自己编译 本文章的解决方法就是通过编译mysql 如下图
  • AntD-tree组件使用详析

    目录 一 selectedKeys与onSelect 官方文档 代码演示 onSelect 注意事项 二 expandedKeys与onExpand 官方文档 代码演示 onExpand 注意事项 三 loadedKeys与onLoad和o
  • 【whr的深度学习总结1】使用Matconvnet训练imbalance全连接网络

    matconvnet只提供了卷积函数 并没有提供全连接函数 那么如何在卷积函数上训练全连接呢 首先 我们要清楚一件事 卷积核为1 1同时步长是1的网络就是全连接 那么配置网络的时候就只需执行卷积函数 同时配置卷积核的大小就可以 这是我的配置
  • 13种老人不适合带孩子_如果是这3种老人,并不建议他们带孩子,不是偏见是为孩子好...

    文 勤亲妈妈 文章原创 欢迎个人转发分享 孩子是一个家庭生命的传承 是全家人的 掌中宝 有了孩子之后 不只是父母的心思和注意力会放在孩子身上 就连老人对孩子也是非常的宠爱 都说 隔辈儿亲 隔辈儿亲 老人对孩子的爱是毋庸置疑的 上了年纪之后
  • uniapp如何使用uview中的loadmore上拉加载

    效果 引入loadmore 首先搜索和tab的样式
  • 016 Java中 int、Integer和 new Integer() 使用==比较

    Java中 int Integer和 new Integer 使用 比较 int则是java的一种基本数据类型 其定义的是基本数据类型变量 Integer是int的包装类 其定义的是引用类型变量 基本数据类类型存的是数值本身 引用类型变量在
  • React Navigation 5.x第八章 导航器的生命周期

    在之前的章节中 我们学会了使用stack导航器 其有两个页面 Home和Details 并且知道如何使用navigation navigate RouteName 在两个路由之间跳转 在这篇文章中 我们主要了解当我们离开Home页面的时候都
  • STOMP原理与应用开发详解

    本文首发微信公众号 码上观世界 STOMP概述 我们已经知道WebSocket是基于TCP协议之上的应用层协议 在 WebSocket API 中 浏览器和服务器只需要完成一次握手 两者之间就直接可以创建持久性的连接 并进行双向数据传输 W
  • openGL环境贴图

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一 代码 1 主程序 二 着色器程序 1 顶点着色器 2 片元着色器 运行效果 总结 源码下载 前言 在照明和材质章节中 我们考虑了物体的 光泽 然而 我们从未对非常闪亮的
  • 日撸leetCode三道题---Day1---二分查找

    二分查找时间复杂度为O log n 针对有序数组 定义查找区间 var low 0 var high n 循环查找 while low
  • 深入剖析HTTP和HTTPS代理在爬虫中的应用价值

    在当今信息时代 数据是无处不在且极其宝贵的资源 对于从互联网上获取大量结构化或非结构化数据的需求而言 网络爬虫成为一种强有力的工具 然而 在实际操作过程中 我们常常会面临许多挑战和限制 其中一个主要问题就是目标网站可能会设置反扒机制来阻止自
  • 电话悬浮代码

    代码
  • 小娜老师的讲义-搭建私人镜像

    前言 之前我们讲docker的基本命令的时候 提到过docker pull 每次也是让大家直接从官方的registry 仓库 里面把需要用到的基础镜像pull下来 那我现在不想用官方的了 我就像用我自己已经做好的 而且其他同网段的同事们都可
  • 网络安全第1章课后题 网络安全概论

    1 选择题 1 计算机网络安全是指利用计算机网络管理控制和技术措施 保证在网络环境中数据的 完整性 网络服务可用性和可审查性受到保护 A 机密性 B 抗攻击性 C 网络服务管理性 D 控制安全性 2 网络安全的实质和关键是保护网络的 安全
  • 【ACWing 每日一练之接龙数列】

    题目 对于一个长度为 K的整数数列 A1 A2 AK 我们称之为接龙数列当且仅当 Ai的首位数字恰好等于 Ai 1的末位数字 2 i K 例如 12 23 35 56 61 11 是接龙数列 12 23 34 56不是接龙数列 因为 56的