[AHOI2018初中组] 分组---贪心算法
贪心没套路果真如此。
题目描述
小可可的学校信息组总共有 n 个队员,每个人都有一个实力值 ai。现在,一年一度的编程大赛就要到了,小可可的学校获得了若干个参赛名额,教练决定把学校信息组的 n 个队员分成若干个小组去参加这场比赛。
但是每个队员都不会愿意与实力跟自己过于悬殊的队员组队,于是要求分成的每个小组的队员实力值连续,同时,一个队不需要两个实力相同的选手。举个例子:[1,2,3,4,5] 是合法的分组方案,因为实力值连续;[1,2,3,5] 不是合法的分组方案,因为实力值不连续;[0,1,1,2] 同样不是合法的分组方案,因为出现了两个实力值为 1 的选手。
如果有小组内人数太少,就会因为时间不够而无法获得高分,于是小可可想让你给出一个合法的分组方案,满足所有人都恰好分到一个小组,使得人数最少的组人数最多,输出人数最少的组人数的最大值。
注意:实力值可能是负数,分组的数量没有限制。
输入格式
输入有两行:
第一行一个正整数 n,表示队员数量。
第二行有 n 个整数,第 i 个整数 ai 表示第 i 个队员的实力。
输出格式
输出一行,包括一个正整数,表示人数最少的组的人数最大值。
输入输出样例
输入 #1复制
7 4 5 2 3 -4 -3 -5
输出 #1复制
3
说明/提示
【样例解释】 分为 2 组,一组的队员实力值是 {4,5,2,3},一组是 {−4,−3,−5},其中最小的组人数为 3,可以发现没有比 3 更优的分法了。
【数据范围】
对于 100% 的数据满足:1≤n≤100000,∣ai∣≤109。
本题共 10 个测试点,编号为 1∼10,每个测试点额外保证如下:
| 测试点编号 | 数据限制 |
|---|---|
| 1∼2 | n≤6,1≤ai≤100 |
| 3∼4 | n≤1000,1≤ai≤105 且 ai 互不相同 |
| 5∼6 | n≤100000,ai 互不相同 |
| 7∼8 | n≤100000,1≤ai≤10^5 |
| 9∼10 | n≤100000,−10^9≤ai≤10^9 |
思路:
从小到大排序,每组当出现不连续的数或前一个的个数比后一个的个数多时结束。
第二个是为什么?
我想的是:你多了可以给前面的组;但你少了,你若想向前方靠,那你前面比你多的数和后面的数会因你而分开(罪人),若想当头,和后面的在一起,那前面多的数就会……

代码:
//忘记 2 2 3 3的情况
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int n, a[100005], m = 1;
int min0 = 9999999;
struct s {int i, w;
}b[100005];
void xunhuan(int i, int j) {//当后面的数个数没前面多时||断了,结束int z = i;z++;while (b[z].i + 1 == b[z + 1].i && z + 1 <= j) {if (b[z].w <= b[z + 1].w) {b[z].w--;m++;z++;}else {b[z].w--;m++;break;}}
}
int main(){cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];}//输入数sort(a, a + n);//排序也可以用我之前写的归并排序int j = 0;for (int i = 0; i < n; i++) {//将相同的合并if (i == 0) {b[j].i = a[i];b[j].w = 1;}else {if (b[j].i == a[i]) {b[j].w++;}else {b[++j].i = a[i];b[j].w = 1;}}}m = 1;for (int i = 0; i <= j; i++) {if (b[i].i + 1 == b[i + 1].i&&i+1<=j) {if(b[i+1].w==1) {m++;}//连续且单一else {while(b[i + 1].w != 1){//不但一,防止该数的数量超过3xunhuan(i,j);min0 = min0 > m ? m : min0;m = 0;}m = 1;}}else {//不连续归零min0 = min0 > m ? m : min0;m = 1;}}cout << min0 << endl;return 0;
}
你可以用c来写,但归并手写有点多,所以偷个懒
相关文章:
[AHOI2018初中组] 分组---贪心算法
贪心没套路果真如此。 题目描述 小可可的学校信息组总共有 n 个队员,每个人都有一个实力值 ai。现在,一年一度的编程大赛就要到了,小可可的学校获得了若干个参赛名额,教练决定把学校信息组的 n 个队员分成若干个小组去参加这场…...
知识图谱-学习计划
✨知识图谱知识学习,给我点赞!🌟🌟🌟 🌟什么是知识图谱? 知识图谱是一种通过图结构表示知识的技术,它可以帮助我们更清晰地理解和组织信息。无论是学习、工作还是生活,知…...
网安作业3
标准版 接口ip配置 r2 [r2]interface GigabitEthernet 0/0/0 [r2-GigabitEthernet0/0/0]ip address 13.0.0.3 24 [r2-GigabitEthernet0/0/0]interface GigabitEthernet 0/0/1 [r2-GigabitEthernet0/0/1]ip address 100.1.1.254 24 [r2-GigabitEthernet0/0/1]interface Gigab…...
快速提升网站收录:内容创作的艺术
快速提升网站收录,内容创作是关键。以下是一些关于内容创作以提升网站收录的艺术性建议: 一、关键词研究与优化 选择长尾关键词:进行深入的关键词研究,选择既符合网站主题又具有一定搜索量的长尾关键词。这些关键词通常更具体&a…...
【C语言】CreateFile函数用法介绍
目录 一、函数原型与基本功能 二、参数详解 1. lpFileName(文件路径) 2. dwDesiredAccess(访问权限) 补充说明 3. dwShareMode(共享模式) 5. dwCreationDisposition(创建策略)…...
蓝桥杯好数
样例输入: 24 输出:7 输入:2024 输出: 150 思路:本题朴素方法的时间复杂度是O(n * log10(n)) ,不超时。主要考察能否逐位取数,注意细节pi,这样不会改变i,否则会导致循环错误。 #in…...
SOME/IP--协议英文原文讲解10
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2.2 Req…...
欢乐力扣:赎金信
文章目录 1、题目描述2、 代码 1、题目描述 赎金信,给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在…...
【量化科普】Standard Deviation,标准差
【量化科普】Standard Deviation,标准差 🚀🚀🚀量化软件开通🚀🚀🚀 🚀🚀🚀量化实战教程🚀🚀🚀 在量化投资领域…...
stm32单片机个人学习笔记15(I2C通信协议)
前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…...
网络安全防护
一:物理安全防护 直接的物理破坏所造成的损失远大于通过网络远程攻击 提高物理安全需关注的问题: 1: 服务器和安全设备是否放置在上锁的机房内? 2: 网络设备是否被保护和监控? 3: 是否有无关人员单独在敏感区域工作&…...
YOLOV7的复现过程
复现 YOLOv7 代码的步骤相对清晰,主要分为以下几个部分: 环境准备克隆 YOLOv7 仓库准备数据集训练模型验证和测试推理(Inference) 下面是一个简化的流程来帮助你复现 YOLOv7 代码: 1. 环境准备 首先,你…...
uniapp实现app的pdf预览
实现效果 文件准备 static下添加该pdf文件(下载地址:https://gitee.com/shallow-winds/resource_package/tree/master/%E6%96%B9%E6%B3%95%E4%B8%80/html) 使用web-view进行展示: 在这里插入代码片 <web-view :src"u…...
用Java创建一个验证码的工具类
在Java中创建一个验证码工具类,可以通过以下代码实现。该工具类支持生成包含字母和数字的随机验证码图片,并添加干扰线和噪点以提高安全性。以下是详细实现: 完整代码实现 import javax.imageio.ImageIO; import java.awt.*; import java.aw…...
uvm中的激励是如何发送出去的
在UVM中,Sequence生成的激励(Transaction)通过以下协作流程发送到Driver并最终驱动到DUT,其核心机制如下: --------------- --------------- ------------ ----- | Sequence | → | Seque…...
一只企鹅如何改变世界
一、历史的转折点:一只企鹅如何改变世界 1991年,芬兰大学生Linus Torvalds在邮件列表中写道:“我正在做一个自由的操作系统(只是爱好,不会像GNU那样庞大专业)”。这个后来被称为Linux内核的项目,与GNU项目的结合,点燃了开源运动的燎原之火。 关键演化: 1996年:Tux企…...
拦截器VS过滤器:Spring Boot中请求处理的艺术!
目录 一、拦截器(Interceptor)和过滤器(Filter):都是“守门员”!二、如何实现拦截器和过滤器?三、拦截器和过滤器的区别四、执行顺序五、真实的应用场景六、总结 🌟如果喜欢作者的讲…...
C语言预处理学习笔记
1. 预处理器的功能 预处理器(Preprocessor)在编译C语言程序之前对源代码进行预处理。预处理指令以#号开头,主要包括文件包含、宏定义、条件编译等功能。 2. 文件包含 文件包含功能用于在一个文件中包含另一个文件的内容,通常用…...
LLM基础环境准备-云服务器
软件环境 腾讯云 操作系统: TencentOS Server 3.1 (TK4) Python: 3.9.0(使用 conda的虚拟python环境,可根据实际需要更换版本,当前使用的是3.9.0的版本) CUDA Version: 12.2(腾讯云会自动安装) Driver Version: 5…...
网络协议相关知识有哪些?
前言 网络协议的基础是OSI和TCP/IP模型,这两个模型是理解协议分层的关键。 正文(仅是个人理解,如有遗漏望海涵) 网络协议是网络中设备间通信的规则和标准,涉及数据传输、路由、错误控制等多个方面。以下是网络协议相关知识的系统梳理: 一、网络协议分层模型 1、OSI七…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
