【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python
6134. 哞叫时间II
Week 1
2月20日
农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛,但她很难理解为什么他这么喜欢它。
他说「竞赛中我最喜欢的部分是贝茜说『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。
埃尔茜仍然不理解,所以农夫约翰将竞赛以文本文件形式下载,并试图解释他的意思。
竞赛被定义为一个包含 N N N 个整数的数组 a 1 , a 2 , … , a N a_1,a_2,…,a_N a1,a2,…,aN。
农夫约翰定义哞叫为一个包含三个整数的数组,其中第二个整数等于第三个整数,但不等于第一个整数。
一种哞叫被称为在竞赛中发生,如果可以从数组中移除整数,直到只剩下这一哞叫。
由于贝茜据称「在整个竞赛中一直哞哞叫」,请帮助埃尔茜计算竞赛中发生的不同哞叫的数量!
两种哞叫是不同的,如果它们并非由相同的整数以相同的顺序组成。
输入格式
输入的第一行包含 N N N。
第二行包含 N N N 个空格分隔的整数 a 1 , a 2 , … , a N a_1,a_2,…,a_N a1,a2,…,aN。
输出格式
输出竞赛中发生的不同哞叫的数量。
注意这个问题涉及到的整数可能需要使用 64 位整数型(例如,Java 中的 “long”,C/C++ 中的 “long long”)。
数据范围
1 ≤ N ≤ 1 0 6 1 \le N \le 10^6 1≤N≤106,
1 ≤ a i ≤ N 1 \le a_i \le N 1≤ai≤N
输入样例:
6
1 2 3 4 4 4
输出样例:
3
样例解释
竞赛包含三种不同的哞叫:1 4 4,2 4 4 和 3 4 4。
题目理解
题目要求统计数组中所有满足 abb 形式的三元组子序列的数量,其中 a != b。也就是说,我们需要找到所有满足以下条件的子序列:
- 子序列长度为 3。
- 第二个和第三个元素相同,且第一个元素与它们不同。
做题思路
1. 统计每个数字的总出现次数
- 使用
Counter统计数组中每个数字的总出现次数,存储在cnt1中。 - 这一步的目的是为了后续判断某个数字
b是否可以作为abb中的b(即b至少出现两次)。
2. 统计到每个位置为止的不同数字的个数
- 使用一个数组
left和一个集合vis,从左到右遍历数组,记录到每个位置为止的不同数字的个数。 left[i]表示从数组开头到位置i(不包括i)为止,有多少个不同的数字。- 这一步的目的是为了快速计算某个
b对应的a的个数。
3. 倒序遍历,统计每个 b 对应的 a 的个数
- 使用一个字典
cnt2记录从后往前遍历时每个数字的出现次数。 - 当某个数字
b第二次出现时(即找到倒数第二个b),计算其对应的a的个数:a的个数为left[i],即倒数第二个b前面不同数字的个数。- 如果
b的总出现次数大于 2,说明倒数第二个b前面还有b,需要减去重复的情况。
- 将每个
b对应的a的个数累加到答案ans中。
4. 输出结果
- 最终输出
ans,即所有满足条件的abb子序列的数量。
复杂度分析
- 时间复杂度:(O(n)),其中 (n) 是数组的长度。我们只需要遍历数组两次(一次正向,一次反向)。
- 空间复杂度:(O(n)),用于存储
cnt1、cnt2和left。
code:
from collections import Counter, defaultdictn = int(input())
a = list(map(int, input().split()))
ans = 0# 统计到每个位置为止的不同数字的个数
left = [0] * n
vis = set()
for i in range(n):left[i] = len(vis)vis.add(a[i])cnt1 = Counter(a) # 统计每个数字的总出现次数
cnt2 = defaultdict(int)# 倒序遍历,统计每个 b 对应的 a 的个数
for i in range(n - 1, -1, -1):cnt2[a[i]] += 1if cnt2[a[i]] == 2: # 找到倒数第二个ba_count = left[i] # a的个数if cnt1[a[i]] > 2: # 减去重复的情况a_count -= 1ans += a_count
print(ans)
END
如果有更多问题或需要进一步的帮助,可以在评论区留言讨论哦!
如果喜欢的话,请给博主点个关注 谢谢
相关文章:
【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python
6134. 哞叫时间II Week 1 2月20日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛,但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解,所以农夫约翰将竞赛…...
【CXX】5 桥接模块参考
1 CXX主要概念概览已经涵盖了CXX用来表示语言边界的高级模型。本章在此基础上详细介绍#[cxx::bridge]的语法和功能。 extern “Rust” ——将不透明的Rust类型、Rust函数、Rust方法暴露给C;具有生命周期的函数。extern“C”——绑定不透明的C类型、C函数、C成员函数…...
open62541,有点问题
要运行 open62541 提供的示例服务端程序,您需要确保以下几点: 代码已正确编译。了解如何启动服务端示例。确认服务端是否正常运行。 以下是详细的步骤和说明: 1. 确保代码已正确编译 在运行任何示例之前,您需要先完成项目的构建…...
智能交通系统(Intelligent Transportation Systems):智慧城市中的交通革新
智能交通系统(Intelligent Transportation Systems, ITS)是利用先进的信息技术、通信技术、传感技术、计算机技术以及自动化技术等,来提升交通系统效率和安全性的一种交通管理方式。ITS通过收集和分析交通数据,智能化地调度、控制…...
【TOT】Tree-of-Thought Prompting
Tree-of-Thought Prompting Tree-of-Thought Prompting In one example, a ToT prompt improves ChatGPT 3.5’s reasoning ability to answer a question that could previously only be answered by ChatGPT 4. 赋予了gpt3 推理能力,这能力只有gpt4才有。 增强、反馈和贡献 …...
内置函数用法
目录 1. 概述 2. 数学运算 2.1 求绝对值函数 abs( ) 2.2 取近似值 round( ) 2.3 求次方 pow( ) 2.4 求商和余数 divmod( ) 2.5 求最大值 max( ) 2.6 求最小值 min( ) 2.7 求累加和 sum( ) 2.8 eval( ) 3. 类型转换 3.1 #ord( ):字…...
基于LM Arena 的 LLM 基准测试排行榜:DeepSeek-R1 排名第 5
打开 Arena 网站:https://lmarena.ai/,点开 Leaderboard 可以看到上图的排行榜,可以看到 DeepSeek-R1 排名第 5。...
图数据库Neo4j面试内容整理-建模实践
在 Neo4j 中进行图数据建模(Graph Modeling)是设计和构建高效图数据库系统的关键。图数据库与关系型数据库不同,图数据建模强调的是如何通过节点、关系、标签和属性来表示和组织数据之间的复杂联系。因此,图数据库的建模过程不仅需要理解数据本身,还需要考虑查询的效率和扩…...
晶闸管的串联使用
1、何时需要使用晶闸管串联 单个晶闸管的额定电压是有一定限度的,当实际电路要求晶闸管承受的电压值大于单个晶闸管的额定电压时,可以用两个或两个以上同型号的晶闸管串联起来使用。 多个晶闸管串联时,由于各晶闸管的特性不可能完全一致,这样将导致晶闸管在阻断状态、开通与…...
【QT】第一个 QT程序(对象树)
🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 QtHelloWorld程序 🦋 使⽤"标签"实现纯代码⽅式实现可视化操作实现 🦋 使⽤"按钮"实现可视化操作实现纯代码实现…...
游戏引擎学习第113天
仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板:优化的基本过程 在游戏编程中,优化是一个非常重要的学习内容,尤其是想要成为专业开发者时。优化的核心是理解代码的执行速度,以及如何提升其性能。在这个阶段,已经…...
Linux 本地部署 Deepseek-R1 大模型!
DeepSeek-R1 的发布,掀起了一场风暴! 开源、强大、本地可部署,真正私有的 AI 助手,不受网络、隐私等限制,数据安全感直接拉满! 今天,手把手带你在 Linux 上本地部署 DeepSeek-R1,关…...
【深度学习】Pytorch的深入理解和研究
一、Pytorch核心理解 PyTorch 是一个灵活且强大的深度学习框架,广泛应用于研究和工业领域。要深入理解和研究 PyTorch,需要从其核心概念、底层机制以及高级功能入手。以下是对 PyTorch 的深入理解与研究的详细说明。 1. 概念 动态计算图(D…...
IDEA + 通义灵码AI程序员:快速构建DDD后端工程模板
作者:陈荣健 IDEA 通义灵码AI程序员:快速构建DDD后端工程模板 在软件开发过程中,一个清晰、可维护、可扩展的架构至关重要。领域驱动设计 (DDD) 是一种软件开发方法,它强调将软件模型与业务领域紧密结合,从而构建更…...
内容中台重构企业内容管理的价值维度与实施路径
内容概要 在数字化转型进程中,企业内容管理(ECM)与内容中台的差异性体现在价值维度的重构与能力边界的突破。传统ECM系统通常聚焦于文档存储、权限控制等基础功能,而内容中台通过标准化流程引擎与智能工具链,构建起覆…...
CPU封装形式解析:从传统到先进封装的技术演进
中央处理器(CPU)的封装技术是半导体制造的关键环节,直接影响芯片的电气性能、散热效率和物理可靠性。随着半导体工艺的不断进步,封装形式从早期的简单结构演变为复杂的多维集成方案。本文将系统解析CPU的主流封装形式及其技术特点…...
Spring Boot 应用(官网文档解读)
Spring Boot 启动方式 SpringApplication.run(MyApplication.class, args); Spring Boot 故障分析器 在Spring Boot 项目启动发生错误的时候,我们通常可以看到上面的内容,即 APPLICATION FAILED TO START,以及后面的错误描述。这个功能是通过…...
【智能客服】ChatGPT大模型话术优化落地方案
本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 一、项目背景 1.1 行业背景 1.2 业务现…...
1.22作业
1 Web-php-unserialize __construct()与$file、__destruct() __wakeup()检查 先绕过wakeup函数: O:4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";}1.PHP序列化的时候对public protected private变量的处理方式是不同的 public无标…...
蓝桥杯 Day6 贪心
贪心 1.要点 2.例题 2022 砍竹子 学习: 1.模拟砍竹子砍到高度1,不过要记录过程高度,以便后续判断是否存在(想到集合哈希),然后外面嵌套数组(活用数据结构)resize给大小 vector<unordered_set<ll>> hs;//记录第i根竹子下降到1过程中的每…...
学习aigc
DALLE2 论文 Hierarchical Text-Conditional Image Generation with CLIP Latents [2204.06125] Hierarchical Text-Conditional Image Generation with CLIP LatentsAbstract page for arXiv paper 2204.06125: Hierarchical Text-Conditional Image Generation with CLIP L…...
overflow-x: auto 使用鼠标实现横向滚动,区分触摸板和鼠标滚动事件的方法
假设一个 div 的滚动只设置了 overflow-x: auto 我们发现使用鼠标的滚轮是无法左右滚动的,但是使用笔记本电脑的触摸板,或者在移动设备上是可以滚动的。所以我们需要兼容一下鼠标的横向滚动功能。 我们可以监控 wheel 事件,然后根据位置来计…...
模拟实现Java中的计时器
定时器是什么 定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码. 前端/后端中都会用到计时器. 定时器是⼀种实际开发中⾮常常⽤的组件. ⽐如⽹络通信中, 如果对⽅ 500ms 内没有返回数据, 则断开连接尝试重…...
Ubuntu 的RabbitMQ安装
目录 1.安装Erlang 查看erlang版本 退出命令 2. 安装 RabbitMQ 3.确认安装结果 4.安装RabbitMQ管理界面 5.启动服务并访问 1.启动服务 2.查看服务状态 3.通过IP:port 访问界面 4.添加管理员用户 a)添加用户名:admin,密码࿱…...
设计模式教程:命令模式(Command Pattern)
1. 什么是命令模式? 命令模式(Command Pattern)是一种行为型设计模式。它将请求封装成一个对象,从而使你能够用不同的请求、队列和日志请求以及支持可撤销操作。 简单来说,命令模式通过把请求封装成对象的方式解耦了…...
JavaScript数组常用的方法有哪些?map、filter、reduce 的区别和使用场景是什么?
JavaScript数组常用的方法有哪些?map、filter、reduce 的区别和使用场景是什么? JavaScript 数组常用方法 JavaScript 数组有很多实用的方法,以下先简单介绍一些常见的基础方法,再重点讲解 map、filter、reduce 这三个高阶函数。…...
vim修改只读文件
现象 解决方案 对于有root权限的用户,在命令行输入 :wq! 即可强制保存退出...
【DeepSeek】本地部署,保姆级教程
deepseek网站链接传送门:DeepSeek 在这里主要介绍DeepSeek的两种部署方法,一种是调用API,一种是本地部署。 一、API调用 1.进入网址Cherry Studio - 全能的AI助手选择立即下载 2.安装时位置建议放在其他盘,不要放c盘 3.进入软件后…...
为AI聊天工具添加一个知识系统 之114 详细设计之55 知识表征
本文要点 要点 项目名称:为使用AI聊天工具的聊天者添加一个知识系统 项目背景: 在现在各种AI聊天工具层出不穷的今天,我觉得特别需要一个通用的AI聊天工具的图形界面能够为每个聊天者(或一个利益相关者组织)建立自…...
centos 9 时间同步服务
在 CentOS 9 中,默认的时间同步服务是 chrony,而不是传统的 ntpd。 因此,建议使用 chrony 来配置和管理时间同步。 以下是使用 chrony 配置 NTP 服务的步骤: 1. 安装 chrony 首先,确保系统已安装 chrony。 在 CentOS…...
