蓝桥杯入门赛【舞狮】算法赛题目

news/2025/2/26 10:33:40/

 题目

问题描述

舞狮是中国传统民间艺术,起源于汉代,盛行于唐代。它结合了武术、舞蹈和音乐,常在节日和庆典中表演,象征驱邪避灾、带来好运。表演者通过模仿狮子的动作,展现狮子的喜怒哀乐,常伴有锣鼓音乐,增添喜庆氛围。

如果一支舞狮队中,从狮头开始,每位成员的舞狮技能值严格大于其前面所有成员的数量,那么这支舞狮队被称为合理的舞狮队。例如 [1,2,3,4],[2,3,5][1,2,3,4],[2,3,5] 是合法的舞狮队,[1,3,1],[2,1,3][1,3,1],[2,1,3] 则不是合法的舞狮队。

新年即将到来,蓝桥村今年的舞狮队共有 NN 名成员,第 ii 名成员的舞狮技能值为 AiAi​。舞狮队教练小蓝需要将这 NN 名成员合理地分组形成舞狮队,他想知道最少需要分成多少队,请你帮忙解决这个问题。

注意:你必须保证每位成员至少被分到一个舞狮队。

输入格式

第一行输入一个整数 N(1≤N≤105)N(1≤N≤105) 表示舞狮队成员的数量。

第二行输入 NN 个整数 A1,A2,A3,⋯,AN(1≤Ai≤N)A1​,A2​,A3​,⋯,AN​(1≤Ai​≤N) 表示每位成员的舞狮技能值。

输出格式

输出一个整数表示答案。

样例输入

5
1 3 5 2 1

样例输出

2

说明

对于样例,可以分为 [1,2,3][1,2,3] 和 [1,5][1,5],至少需要分成两支舞狮队。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M
Go3s256M
JavaScript3s256M

代码展示 

#include <bits/stdc++.h>
using namespace std;int main() {ios::sync_with_stdio(0);cin.tie(0);int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; ++i) {cin >> a[i];}sort(a.begin(), a.end());multiset<int> s;for (int x : a) {auto it = s.lower_bound(x);if (it == s.begin()) {s.insert(1);} else {--it;int k = *it;s.erase(it);s.insert(k + 1);}}cout << s.size() << endl;return 0;
}

代码解释

  1. 输入处理:读取输入数据并存储在一个向量中。

  2. 排序:对向量进行升序排序,以便按顺序处理每个成员。

  3. 维护队列长度:使用多重集合 s 来维护当前所有队列的长度。

  4. 处理每个成员

    • 使用 lower_bound 查找第一个不小于当前成员技能值的位置。

    • 如果没有找到合适的队列(即所有队列的长度都不小于当前成员技能值),则新建一个队列。

    • 否则,将当前成员放入找到的最长队列中,并更新该队列的长度。

  5. 输出结果:最终,集合 s 的大小即为最少需要的队列数目。

写者心得 

那我解决这个题目的时候,我的第一反应就是通过排序,然后查找符合要求的数组,然后记次数,但是后面经过学习,发觉这个题应该使用贪心算法再加上二分查找,可以更高效的解决这个问题,其中还用到了优先队列算法,可以说是一个复合题目难度对于我来说的确不低,其中使用的这个函数也是我不曾用过的


http://www.ppmy.cn/news/1574990.html

相关文章

Java Web开发实战与项目——项目集成与部署

软件开发中&#xff0c;集成与部署是非常关键的一步。无论是将前端与后端模块进行有效的集成&#xff0c;还是通过自动化构建工具&#xff08;如Maven&#xff09;和CI/CD工具&#xff08;如Jenkins&#xff09;实现自动化部署&#xff0c;都会对项目的开发和发布流程产生深远影…

【大模型LLM】DeepSeek LLM Scaling Open-Source Language Models with Longtermism

深度探索LLM&#xff1a;以长期主义扩展开源语言模型 0.论文摘要 开源大语言模型&#xff08;LLMs&#xff09;的快速发展确实令人瞩目。然而&#xff0c;以往文献中描述的扩展规律得出了不同的结论&#xff0c;这为LLMs的扩展蒙上了一层阴影。我们深入研究了扩展规律&#…

使用Python爬虫获取京东商品评论API接口的详细指南

在数据分析和市场研究中&#xff0c;商品评论数据是了解用户需求和产品改进方向的重要资源。京东作为国内知名的电商平台&#xff0c;提供了丰富的商品评论数据接口&#xff08;JD.item_review&#xff09;&#xff0c;开发者可以通过这些接口获取商品评论的详细信息&#xff0…

【OMCI实践】ONT上线过程的omci消息(六)

引言 在前四篇文章中&#xff0c;主要介绍了ONT上线过程的OMCI交互的第一、二、三个阶段omci消息&#xff0c;本篇介绍第四个阶段&#xff0c;OLT下发配置到ONT。前三个阶段&#xff0c;每个厂商OLT和ONT都遵循相同标准&#xff0c;OMCI的交换过程大同小异。但第四个阶段&…

飞天侠:用 aioredis 加速你的 Redis 操作

前言 如果你还在用同步方式操作 Redis,你的应用可能还停留在“慢跑”阶段,而不是极速奔跑!在现代高性能应用中,响应速度至关重要,而异步操作就是那把解锁高速的钥匙。而 aioredis,这款基于 asyncio 的 Redis 异步客户端,正是帮你提升性能、缩短延迟的得力助手。它能让你…

uni-app 系统学习,从入门到实战(一)—— 从零开始搭建第一个跨平台应用

全篇大概 1500 字&#xff0c;建议阅读时间 5min 简介 UniApp 是一个基于 Vue.js 的跨平台开发框架&#xff0c;开发者可以通过编写一套代码&#xff0c;同时发布到 iOS、Android、H5、微信小程序、支付宝小程序、百度小程序等多个平台。本文将带你从零开始&#xff0…

BIO系统调用strace查看IO阻塞

BIO服务端例子 服务端监听8090端口&#xff0c;每一个客户端用一个线程处理&#xff0c;不断的获取客户端的输入数据并打印 import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.…

HPE Aruba Networking推出全新解决方案助力零售商增强物联网数据收集与边缘处理能力

全新网络连接解决方案助力IT 团队加强对零售环境的保护与管理,提升物联网(IoT)安全性,同时优化用户体验与运营效率 纽约 — 2025年2月25日 —慧与科技(NYSE: HPE)日前宣布推出全新功能,借助高效的网络连接和高性能边缘计算,助力零售商提升客户体验与运营效率,从而进一步打造零…