当前位置: 首页 > article >正文

洛谷P1678烦恼的高考志愿题解

一、题目理解输入第一行、m所学校n位学生第二行、m个预计录取分数第三行、n个学生估分成绩输出最小不满意度之和二、解题思路其实这题就是简单的二分对于我这种菜鸟来说咱就用最简单最好理解的方式来写。1、首先观察一下数据范围把全局变量写出来。注定义在主函数外的原因避免栈溢出。局部变量存储在栈区课件大小有限全局变量存储在数据短空间更大。默认初始化为0数组和变量都是。2、要想求所有学生的差值和最小要先求每个学生的最小差值然后累加所以我们需要先对m个学校预估的分数进行从小到大排序然后针对每个学生的成绩进行二分查找找到最接近的分数线。三、代码解析#include iostream #include algorithm //sort函数算法库 #include cmath //数学库abs绝对值 using namespace std;头文件用万能头文件最好#includebits/stdc.h但是Mac系统用不了devc所以我用vscode写后面博客将全是用到啥头文件写啥。#include algorithm算法库提供sort排序和lower_bound二分查找#include cmath数学库提供abs绝对值函数using namespace std;使用标准命名空间避免写std::前缀const int N 100010; // m,n大小最大为10的5次方开的稍微大一点 int a[N], b[N]; // 学校和学生估计分数观察数据mn范围都是10的5次方所以我们定义N稍大为100010.a[N]数组放m个学校的预估分数b[N]数组放n个学生的预计成绩int erfen(int arr[], int l, int r, int t) { while (l r) { int mid l (r - l) / 2; // 防止溢出 if (arr[mid] t) { r mid; } else l mid 1; } return l; }定义二分函数我们需要知道二分数组arr[]、查找的区间l,r、和查找的数t。int mid l (r - l) / 2; 为了防止溢出可以这么求mid当然也可以用移位运算符int mid l ((r - l) 1);但得注意加上括号。int main() { int m, n; cin m n; for (int i 0; i m; i) { cin a[i]; } for (int i 0; i n; i) { cin b[i]; } sort(a, a m); // 对学校预计分数进行从小到大排序 long long sum 0; // sum可能超int主函数部分三行输入m,n和两个数组。直接用sort函数对a数组排列当然你也可以手写排序各种排序方法都可以。sum用来存储输出结果不满意度和因为 m 和 n 最大 10^5差值最大 10^6最坏情况总和可能达到 10^11超过int范围约 2×10^9所以要用long long。for (int i 0; i n; i) { int score b[i]; int pos erfen(a, 0, m, score); int diff 2e9; // diff记录当前学生与学校分数差最小值所以初始化为最大 if (pos m) { diff min(diff, abs(a[pos] - score)); } if (pos 0) { diff min(diff, abs(a[pos - 1] - score)); } sum diff; } cout sum endl; return 0; }for循环里先遍历每个学生的成绩然后对每个成绩进行二分查找找到第一个学生估分的位置pos用来记住二分返回的结果也就是左端点值其实右端点也一样因为循环停止的条件是lr。初始l0, r4, 区间 [0,4)第1轮mid 0 (4-0)/2 2arr[2]598 550? 是r mid 2区间变为 [0,2)第2轮mid 0 (2-0)/2 1arr[1]567 550? 是r mid 1区间变为 [0,1)第3轮mid 0 (1-0)/2 0arr[0]513 550? 否l mid 1 1区间变为 [1,1)此时 l1, r1循环结束 (l r 不成立)返回 l 1 ✅因为diff为记录当前该学生的差值最小值所以初始化diff为一个很大的值2e9重点为什么要对pos进行大于0小于m的检查因为要保证不越界而且第一个大于学生分数的学校分数不一定是差值最小但是由于数组有序性所以最小差值不是a[pos]就是a[pos-1]所以要进行两次比较后再累加。下面以一个例子来讲学校分数线: [513, 567, 598, 689]学生估分: 530二分查找:erfen(...) 返回 pos 1 (a[1]567)检查差值:a[1]567: |567-530| 37a[0]513: |513-530| 17 ← 更接近最接近的是 a[0]513差值17所以有可能前面的更接近。排序后的数组: [..., a[pos-1], a[pos], ...]↑ ↑小于估分 大于等于估分↓ ↓估分在这里中间估分位置pos值检查pos检查pos-1结果小于所有0✅ (a[0])❌ (越界)只检查第一个在中间1~m-1✅ (a[pos])✅ (a[pos-1])比较两个大于所有m❌ (越界)✅ (a[m-1])只检查最后一个最后进行累加输出就行最后的最后小编有话说这是本人star的第一篇博客还希望各位大佬轻点喷也欢迎各位大佬指出宝贵的建议见证star的成长咱们下篇见

相关文章:

洛谷P1678烦恼的高考志愿题解

一、题目理解输入:第一行、m所学校,n位学生第二行、m个预计录取分数第三行、n个学生估分成绩输出:最小不满意度之和二、解题思路其实这题就是简单的二分,对于我这种菜鸟来说,咱就用最简单最好理解的方式来写。1、首先观…...

OpenMS终极指南:如何快速掌握专业质谱数据分析的完整方案

OpenMS终极指南:如何快速掌握专业质谱数据分析的完整方案 【免费下载链接】OpenMS The codebase of the OpenMS project 项目地址: https://gitcode.com/gh_mirrors/op/OpenMS 蛋白质组学、代谢组学、质谱数据分析、OpenMS开源平台、生物信息学工具 在生命科…...

文件自动同步软件哪个好?企业级高效安全同步方案测评

文件自动同步软件对于许多中大型企业来说,是不可或缺的底层基础设施。不管是内部的多个服务器系统之间,跨部门团队之间,还是和外部的供应链伙伴、总部分支机构之间,都需要依赖文件自动同步软件来实现安全、自动化的文件传输与数据…...

3分钟快速配置:Boss-Key职场隐私保护终极指南

3分钟快速配置:Boss-Key职场隐私保护终极指南 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办公时代,隐…...

新手零压力入门:基于快马平台的ubuntu22.04图文安装实战指南

最近在帮几个朋友入门Linux系统时,发现Ubuntu安装这个看似简单的第一步,对新手来说却充满各种"坑"。从制作启动盘到分区设置,每个环节都可能让初学者手足无措。好在发现了InsCode(快马)平台,它能将复杂的安装过程转化为…...

Comsol 双层结构曲界面声场仿真探索

comsol 双层结构曲界面声场仿真 聚焦探头(焦距60mm,晶片直径14mm)辐射声场在双层介质(水钢)中声压分布,钢为凸界面,曲率半径50mm 当第二层介质声速大于第一层介质声速时,凸界面使声场…...

小鹅通重磅升级|AI Agent 能力全面护航,私域智能经营新范式

*文中配图及虚拟数据仅作效果展示 随着人工智能越来越贴近经营场景,小鹅通紧扣各位商家的实际需求,在原有产品基础上,以AI Agent为核心,完成了新一轮产品升级——在原有功能基础上,引入场景skills,并通过sk…...

修改 WindTerm 快捷键配置为Ctrl+V / Ctrl+C

为了让 复制 / 粘贴 的快捷键更符合 Windows 的使用习惯,可以按下面的方法修改 WindTerm 的配置文件。 一、找到配置文件 先进入 WindTerm 的安装目录,然后依次打开: global 文件夹 在该文件夹中找到以下配置文件之一: wind.keyma…...

4步实现Axure软件本地化:专业设计师的效率提升指南

4步实现Axure软件本地化:专业设计师的效率提升指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 当你面对全英文界…...

AI辅助开发:让快马AI成为你的编程搭档,智能生成健壮的msi安装管理类库

AI辅助开发:让快马AI成为你的编程搭档,智能生成健壮的msi安装管理类库 最近在开发一个需要处理软件安装包管理的项目,其中涉及到大量.msi文件的安装、卸载和状态检查。这类操作虽然标准化程度高,但实际开发中会遇到各种边界情况和…...

2种开源工具解决方案解决Beyond Compare 5授权失效问题

2种开源工具解决方案解决Beyond Compare 5授权失效问题 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare 5作为一款专业的文件比较与同步工具,在软件开发和数据管理领域…...

Pixel Couplet Gen实操手册:像素春联生成结果自动同步至微信公众号图文素材库

Pixel Couplet Gen实操手册:像素春联生成结果自动同步至微信公众号图文素材库 1. 项目介绍与核心功能 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成工具。通过ModelScope大模型的文本生成能力,结合精心设计的8-bit复古游戏…...

Harness Engineering(驾驭工程)

AI 模型已经能写出 100 万行代码。真正的挑战不再是"让它写得更好",而是怎么驾驭它稳定、可靠、不失控地工作。这套围绕 AI 智能体构建约束、反馈与控制系统的方法论,就是 2026 年初迅速席卷工程圈的新范式——Harness Engineering&#xff08…...

2026网盘风云再起:告别“传不动”,这两款不限速良心网盘实测解析

近些年,网盘市场经历了一轮又一轮的洗牌。从早年各大云盘陆续关停,到后来现有网盘部分服务全面转向收费模式,甚至对非会员进行严苛的网速阉割。用户常常面临「存不下、传不动、下不来」的窘境。 如今已是2026年,网盘市场看似被少…...

美元、日元、欧元怎么选?外汇新手该从哪个货币对开始?

最近有不少刚接触外汇交易的朋友问我同一个问题:美元、日元、欧元这些主流货币到底该怎么选?作为一个过来人,我想说的是——选对起步品种,比你想象中重要得多。 很多新手一上来就想着“赚快钱”,直接冲进波动剧烈的交叉…...

MySQL 生产环境故障排查与性能优化全攻略(8.0 版本实战)

前言MySQL 作为目前企业级应用最广泛的开源关系型数据库,在生产环境中承担着核心数据存储与处理任务。默认配置往往无法满足高并发、大数据量的业务场景,同时运维过程中也会频繁遇到各类故障。本文基于 MySQL 8.0 版本,从单实例故障、主从复制…...

后端消息投递可靠性:基于 RabbitMQ 的“双重防线-幂等闭环”模式

后端消息投递可靠性:基于 RabbitMQ 的“双重防线-幂等闭环”模式 一、 发送核心:rabbitTemplate.convertAndSend 重载全览 在 RabbitMQ 的“中控-工人”模式中,中控(生产者)发送指令的形式决定了任务的可靠性深度。 1.…...

重塑暗黑2单机体验:d2s-editor 3大革新功能与技术解析

重塑暗黑2单机体验:d2s-editor 3大革新功能与技术解析 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor 是一款开源的暗黑2存档编辑工具,通过直观的图形界面实现角色属性调整、装备管理和高级合…...

观测云产品更新 | 场景、管理、监控、LLM 监测、用户访问监测等

观测云更新 付费计划与账单 1、针对中国香港及全球区,短信与电话分别新增定价。 2、新增数据点数的计费模式。 场景 1、图表查询 > 外部数据源查询:新增 #{step} 动态变量支持: 支持在查询语句中使用 #{step}作为 interval 占位符&a…...

ModTheSpire终极指南:10个技巧让你的《杀戮尖塔》模组体验翻倍

ModTheSpire终极指南:10个技巧让你的《杀戮尖塔》模组体验翻倍 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire ModTheSpire是《杀戮尖塔》(Slay The Spire)最强大的外部模组…...

综合布线入门技术培训ppt

综合布线是弱电项目中最基础的系统,也是最重要的系统之一。不少施工过程不是很楚,主要集中在两个问题:1、综合布线项目如何做?2、有哪些流程?本期我们通过一个培训ppt来详细总结下。来源:弱电行业网...

VR环保学习机|开启沉浸式环保教育新时代

在环保教育不断升级的今天,如何让公众尤其是青少年真正理解环保的重要性、养成绿色习惯,已经成为教育领域的重要课题。传统的图文讲解虽然内容充足,却往往缺少互动性和代入感,难以让学习者产生深刻的记忆。VR环保学习机正是在这样…...

ViGEmBus虚拟游戏控制器驱动:Windows游戏手柄模拟终极指南

ViGEmBus虚拟游戏控制器驱动:Windows游戏手柄模拟终极指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是Windows系统内核级别的虚拟…...

VR摩托车|沉浸式交通安全教育的新方向

在交通安全教育不断创新的今天,如何让参与者真正理解风险、形成安全意识,成为教育场景中的关键问题。传统的宣讲与视频观看虽然信息完整,却常因缺乏代入感而难以真正触动体验者。而“VR摩托车”作为一款结合虚拟现实技术、实景交互系统和交通…...

解锁5大核心能力:BetterJoy让Switch手柄在PC实现专业级控制

解锁5大核心能力:BetterJoy让Switch手柄在PC实现专业级控制 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode…...

Scarab:空洞骑士模组管理的终极解决方案

Scarab:空洞骑士模组管理的终极解决方案 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 空洞骑士模组管理工具Scarab是专为《空洞骑士》玩家设计的自动化模组管理器…...

BetterNCM安装器完全指南:3分钟掌握网易云音乐插件管理技巧

BetterNCM安装器完全指南:3分钟掌握网易云音乐插件管理技巧 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 你是否厌倦了网易云音乐客户端的功能限制?想要为你的…...

如何用QtScrcpy实现跨平台Android设备高效控制:从连接到精通的完整指南

如何用QtScrcpy实现跨平台Android设备高效控制:从连接到精通的完整指南 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy QtScrcpy是一款功能强大的跨平台Android控制工具…...

downkyi全链路解决方案:从视频获取到专业处理的一站式视频工作流指南

downkyi全链路解决方案:从视频获取到专业处理的一站式视频工作流指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、…...

如何突破AI编程工具限制?三大核心方案助你效率倍增

如何突破AI编程工具限制?三大核心方案助你效率倍增 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial …...