【算法提升】分组 day_tow

article/2025/8/7 11:43:52

1.分组

在这里插入图片描述

1.1 解析

个人认为这题最难的点在于如何想到使用二分的算法来解题。 正向求解:就是去看每一组中需要分多少个人,但是这样求解代码我根本写不出来。
所以根据正难则反的思想,我们可以从最终结果去倒推。 枚举最终的分配结果中,最多的人数(设为x)

在这里插入图片描述

如果你对二分非常熟悉,你就很敏锐的发现这题可以使用二分来求解 当然需要确定左右边界
左边界最小就是1,右边界就是所有声部的种类中,人数最多的那个数量 当然上图的a,b,c这些人数需要使用hash表来存储。

1.2细节问题

大致的逻辑说完之后,我们就要看一些细节问题,如果声部的种类大于要分的组数,那这是无法分成的,所以需要特判一下。

然后就是二分的细节,注意这里是求最小,所以二分时要注意写法,

多提一嘴如何判断 == 的情况,比如这个当sum == m的时候还可能有更优的解法sum<=m所以这里只处理大于的情况

希望看到这里你能自己动手去写一下代码,代码能力也是非常重要的一部分!

1.3代码

#include<iostream>
#include<unordered_map>
#include<vector>
#include<cmath>using namespace std;
int main()
{//1.输入int n=0,m=0;cin>>n>>m;vector<int> nums(n);for(int i=0;i<n;i++)cin>>nums[i];//2.输出//思路枚举+二分,枚举出最终的分配结果中最多的人数,unordered_map<int,int> hash;//统计出相同声部的人的个数for(auto x:nums)hash[x]++;//特判if(hash.size()>m){cout<<-1<<endl;return 0;}//1.left最小为1,right右边界为hash表中的最大人数int max_right=0;for(auto& [a,b]:hash){max_right=max(max_right,b);}int left=0,right=max_right;while(left<right){int mid=left+(right-left)/2;int sum=0;//统计出当最多人数为mid时的组数for(auto& [a,b]:hash){sum+=(b/mid+(b%mid==0 ? 0 :1));if(sum>m)    break;}//多提一嘴如何判断==的情况,比如这个当sum==m的时候还可能有更优的解法sum<=m所以这里只处理大于的情况if(sum>m)//组分太多,说明最多人数太少了 left=mid+1;elseright=mid;}cout<<left<<endl;return 0;
}

http://www.hkcw.cn/article/AuGQIthQLZ.shtml

相关文章

【笔记】Suna 部署之 Supabase 数据库 schema 暴露操作

#工作记录 一、前置信息 在 Suna 部署过程中&#xff0c;Supabase 数据库设置已完成&#xff08;✅ Supabase database setup completed &#xff09;&#xff0c;但需要手动在 Supabase 平台暴露basejump模式&#xff08;schema&#xff09;。 Suna 部署过程中&#xff0c;S…

【Linux 学习计划】-- 进程状态 | 进程运行、阻塞和挂起的本质 | 并行、并发与进程切换 | 进程优先级

目录 进程状态 五状态进程模型 运行、就绪状态的本质 阻塞状态的本质 挂起状态 并行与并发 进程切换 进程优先级 结语 进程状态 进程状态的本质是什么&#xff1f; 首先我们知道&#xff0c;在操作系统中&#xff0c;进程是需要被管理起来的&#xff0c;具体则是用一…

自证式推理训练:大模型告别第三方打分的新纪元

1. 传统验证体系的困境与技术跃迁的必然性 1.1 传统验证器的局限性 现有强化学习框架依赖显式验证器对答案进行二值化判定&#xff0c;这种模式在数学、代码等可验证领域表现优异。某厂内部数据显示&#xff0c;传统R1-Zero方法在代码生成任务中准确率达92%&#xff0c;但切换…

《操作系统真相还原》——加载器

显存 将上一章的中断输出&#xff0c;变为显存输出 加载器 使用mbr引导程序从磁盘中加载loader程序。 MBR %include "boot.inc" SECTION MBR vstart0x7c00 mov ax,cs mov ds,axmov es,axmov ss,axmov fs,axmov sp,0x7c00mov ax,0xb800mov gs,ax;cl…

Spring Boot 应用中实现配置文件敏感信息加密解密方案

Spring Boot 应用中实现配置文件敏感信息加密解密方案 背景与挑战 &#x1f6a9;一、设计目标 &#x1f3af;二、整体启动流程 &#x1f504;三、方案实现详解 ⚙️3.1 配置解密入口&#xff1a;EnvironmentPostProcessor3.2 通用解密工具类&#xff1a;EncryptionTool 四、快速…

前端实现图片压缩:基于 HTML5 File API 与 Canvas 的完整方案

在 Web 开发中,处理用户上传的图片时,前端压缩可以有效减少服务器压力并提升上传效率。本文将详细讲解如何通过<input type="file">实现图片上传,结合 Canvas 实现图片压缩,并实时展示压缩前后的图片预览和文件大小对比。 一、核心功能架构 我们将实现以…

用wireshark抓了个TCP通讯的包

昨儿个整理了下怎么用wireshark抓包&#xff0c;链接在这里&#xff1a;捋捋wireshark 今天打算抓个TCP通讯的包试试&#xff0c;整体来说比较有收获&#xff0c;给大家汇报一下。 首先就是如何搞到可以用来演示TCP通讯的客户端、服务端&#xff0c;问了下deepseek&#xff0c;…

AWS WAF设置IP白名单

目标 设置一个组白名单IP地址&#xff0c;当发现是这些IP地址发过来的请求后&#xff0c;WAF自动放行。 创建IP集 打开WAF页面&#xff0c;开始IP集创建如下图&#xff1a; 设置ip集&#xff0c;如下图&#xff1a; aws waf acl配置白名单 找到Web ACL&#xff0c;开始在…

随笔20250530 C# 整合 IC卡读写技术解析与实现

以下是一个完整、最简化的 FeliCa 读取整合示例&#xff08;无需 SDK&#xff0c;基于 PCSC NuGet 包&#xff09;&#xff0c;你可以直接运行这个控制台程序&#xff0c;验证能否识别 RC-S300 并读取卡片 UID&#xff1a; &#x1f9ea; 示例说明 &#x1f4e6; 使用 NuGet 包…

day024-网络基础-TCP与UDP、DNS

文章目录 1. 李导推荐书籍2. OSI七层模型2.1 传输层2.2 网络层2.2.1 问&#xff1a;两端处于不同局域网的设备怎么网络通信&#xff1f; 2.3 数据链路层2.4 物理层2.5 图解OSI七层模型 3. 数据传输模式3.1 全双工3.2 半双工3.3 单工 4. TCP 3次握手4.1 抓包 5. TCP 4次挥手5.1 …

AI赋能开源:如何借助MCP快速解锁开源项目并提交你的首个PR

引子 很多同学都梦想为开源项目贡献力量&#xff0c;然而现实往往是——面对庞大复杂的项目&#xff0c;从入门到提交第一个有实质性代码的PR&#xff0c;时间跨度可能长达数年。传统路径通常是先从文档贡献开始&#xff0c;逐步深入理解项目架构&#xff0c;最终才能进行代码…

智能问数技术路径对比:NL2SQL vs NL2Semantic2SQL

在人工智能浪潮席卷数据分析领域的当下&#xff0c;“智能问数”凭借其自然语言交互的便捷性&#xff0c;迅速成为企业提升数据民主化与决策效率的焦点。大语言模型&#xff08;LLM&#xff09;展现出的强大语言理解和生成能力&#xff0c;无疑为这一愿景启动了引擎。 然而&am…

QT-Creator安装教程(windows)

目录 1&#xff0c;下载 1.1 镜像源下载 1.2 运行下载的exe文件 1.2.1 QT5 版本安装 1.2.2 QT6 版本安装 1.2.3 如何在安装完成之后&#xff0c;继续添加扩展包 1&#xff0c;下载 1.1 镜像源下载 地址&#xff1a;Index of /qtproject/ 根据电脑系统选择下载linux、macO…

Warm-Flow发布1.7.3 端午节(设计器流和流程图大升级)

Warm-Flow发布1.7.3 端午节&#xff08;设计器流和流程图大升级&#xff09; 更新内容项目介绍功能思维导图演示地址官网Warm-Flow视频 更新内容 [feat] 新版流程图通过前端渲染[perf] 美化流程设计器ui[feat] 办理人权限处理器&#xff0c;新增办理人转换接口&#xff0c;比如…

分布式锁Redisson使用

redission为我们提供了方便使用redis集群的方法&#xff0c;可以使用它完成锁的建立。 依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.36.0</version></dependency>spring引…

Unity UI系统中RectTransform详解

一、基础代码示例 public GameObject node; var rect node.GetComponent<RectTransform>();Debug.Log($"anchoredPosition----{rect.anchoredPosition}"); Debug.Log($"offsetMin.x--{rect.offsetMin}"); Debug.Log($"offsetMax.x--{rect.of…

神经网络(Neural Networks)

设计神经网络的最初动机是编写能够模仿人类大脑学习和思考方式的软件。现今&#xff0c;神经网络也被称为人工神经网络&#xff0c;其工作方式已经与我们所认为的大脑实际工作方式和学习方式大不相同。 研究神经网络的工作始于 20 世纪 50 年代&#xff0c;之后的一段时间它并不…

DeepSeek‑R1-0528 重磅升级:蚂蚁百宝箱免费、无限量调用

DeepSeek‑R1-0528 重磅升级&#xff1a;蚂蚁百宝箱免费、无限量调用 端午假期前一天&#xff0c;DeepSeek‑R1 更新到了 0528 版本&#xff01; 官方说明&#xff1a;0528 版本在深度思考与推理能力方面显著增强——在数学、编程与通用逻辑等多项基准测评中&#xff0c;表现已…

可定制化货代管理系统,适应不同业务模式需求!

在全球化贸易的浪潮下&#xff0c;货运代理行业扮演着至关重要的角色。然而&#xff0c;随着市场竞争的日益激烈&#xff0c;货代企业面临着越来越多的挑战&#xff1a;客户需求多样化、业务流程复杂化、运营成本上升、利润空间压缩……这些挑战迫使货代企业不断寻求创新和突破…

使用基于Xsens惯性传感器的动作捕捉技术测量人体工程学

由于单调和片面的体力消耗&#xff0c;牙科领域的从业者患肌肉骨骼疾病 (MSD) 的几率很高。惯性测量单元 (IMU) 越来越成为评估工作姿势风险的焦点。因此&#xff0c;本研究旨在使用基于惯性传感器的运动捕捉 (MoCap) 评估人体工程学讲座和培训干预对牙科助理学生的姿势风险和M…