洛谷 P1678 烦恼的高考志愿 题解 二分查找

洛谷 P1678 烦恼的高考志愿 (二分查找)    这个题的思路不止是二分,还有别的方法。别的方法在这里只是提一下思路。第一种: 将学校录取分数线个学生估分放在一个数组里,进行排序,然后找到学生估分,找到离学生估分最近的学校分数线,看两个学校谁与学生估分差值最小。前提条件得对学生估分和学校分数线分别弄个标记,这样才能判断谁是学校分数线,谁是学生估分。 第二种: 使用快慢指针,一个指针a指向学校分数线,一个指针b指向学生估分,如果a指向的分数小于b指向的分数并且(a+1)指向的分数大于b指向的分数,这时候就找到区间,判断哪. 阅读详情

烦恼的高考志愿

题目背景

计算机竞赛小组的神牛 V 神终于结束了高考,然而作为班长的他还不能闲下来,班主任老 t 给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是 v 神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。

题目描述

现有 mmm 所学校,每所学校预计分数线是 aia_iai​。有 nnn 位学生,估分分别为 bib_ibi​。

根据 nnn 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。求所有学生不满意度和的最小值。

输入格式

第一行读入两个整数 m,nm,nm,n。mmm 表示学校数,nnn 表示学生数。

第二行共有 mmm 个数,表示 mmm 个学校的预计录取分数。第三行有 nnn 个数,表示 nnn 个学生的估分成绩。

输出格式

输出一行,为最小的不满度之和。

样例 #1

样例输入 #1

4 3
513 598 567 689
500 600 550

样例输出 #1

32

提示

数据范围:

对于 30%30\%30% 的数据,1≤n,m≤10001\leq n,m\leq10001≤n,m≤1000,估分和录取线 ≤10000\leq10000≤10000;

对于 100%100\%100% 的数据,1≤n,m≤1000001\leq n,m\leq1000001≤n,m≤100000,估分和录取线 ≤1000000\leq 1000000≤1000000 且均为非负整数。

思路

比较典的二分查找。我们可以先对高校分数线数组 line[]line[]line[] 排序(二分的前提),然后二分查找第一个大于等于学生分数 xxx 的高校分数线的位置 idxidxidx,取 line[idx]line[idx]line[idx] 与 xxx 的差值的绝对值和 line[idx−1]line[idx-1]line[idx−1] 与 xxx 的差值的绝对值的最小值。同时,应当考虑两个边界情况,即 [idx][idx][idx] 不存在的情况和 [idx−1][idx-1][idx−1] 不存在的情况,做两个特判。

代码

#include <bits/stdc++.h>
using namespace std;
using i64 = long long;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    int m, n;
    cin >> m >> n;
    vector<int> line(m);
    for (int i = 0; i < m; i++)
    {
        cin >> line[i];
    }
    sort(line.begin(), line.end()); // 先排序才能二分
    i64 ans = 0;                    // 注意数据范围,会超long long
    int x;
    while (n--)
    {
        cin >> x;
        int idx = lower_bound(line.begin(), line.end(), x) - line.begin();
        if (idx == m) // 特判1:line[idx]不存在
            ans += x - line[idx - 1];
        else if (idx == 0) // 特判2:line[idx-1]不存在
            ans += line[idx] - x;
        else
            ans += min(line[idx] - x, x - line[idx - 1]);
    }
    cout << ans << '\n';

    return 0;
}
【洛谷】P1678 烦恼的高考志愿 洛谷 P1678 烦恼的高考志愿 阅读详情

相关推荐

【C++】洛谷P1678烦人的高考志愿

第一次这么有成就感!立马写个题解贴记录一下(●ˇ∀ˇ●)

lenofurio的博客 513

算法第一期day5

二分

weixin_60485200的博客 294

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

计算机竞赛小组的神牛 V 神终于结束了高考,然而作为班长的他还不能闲下来,班主任老 t 给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是 v 神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。求所有学生不满意度和的最小值。个学校的预计录取分数。所学校,每所学校预计分数线是。输出一行,为最小的不满度之和。

写代码的犄角旮瘩 1121

PTA每日一题-Python-计算M和N的多个结果

用户输入两个数M和N(用两个input语句输入),其中N是整数,计算M和N的5种数学运算结果,并依次输出,结果间用空格分隔。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ 5种数学运算分别是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ M与N的和、M与N的乘积、M的N次幂、M除N的余数、M和N中较大的值 实现 #!/usr/bin/env python3 #-*- coding:utf-8 -*- i.

Jason的学习笔记 5671

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

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。求所有学生不满意度和的最小值。个学校的预计录取分数。所学校,每所学校预计分数线是。输出一行,为最小的不满度之和。#普及-# #整数二分#本文分享的必刷题目是从。

团爸讲算法 817

绝缘体上硅(SOI) vs 传统硅片:5个关键性能对比及适用场景分析

本文深入对比了绝缘体上硅(SOI)与传统硅片在功耗、速度、隔离性等5个关键性能维度的差异,并分析了各自适用场景。SOI技术凭借其独特的埋氧层结构,在低功耗、高频应用和极端环境下展现出显著优势,特别适合移动设备、汽车电子和航天应用。

weixin_30335575的博客 554

【洛谷 P1678】烦恼的高考志愿 题解(二分查找)

计算机竞赛小组的神牛 V 神终于结束了高考,然而作为班长的他还不能闲下来,班主任老 t 给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是 v 神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。

HEX9CF的技术博客 695

别再混淆了!深入浅出图解四元数姿态控制中的‘误差四元数’(附四种定义对比与仿真)

本文深入解析四元数姿态控制中的误差四元数定义差异,对比四种常见定义(如Q₀∘Q⁻¹与Q⁻¹∘Q₀)及其对PD控制性能的影响。通过刚体动力学仿真验证,揭示定义二(Q⁻¹∘Q₀)在无人机和航天器控制中的最优性能,提供工程实践建议与参数整定技巧,帮助开发者避免常见陷阱并提升控制效率。

weixin_42528191的博客 277

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

题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1678。 我的OJ,http://47.110.135.197/problem.php?id=4276。 题目描述 现有m 所学校,每所学校预计分数线是 ai。有n 位学生,估分分别为 bi​。 根据 n 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。求所有学生不满意度和的最小值。 输入格式 第一行读入两..

努力中的老周的专栏 6054

基于STM32F4的NRF24L01驱动程序

基于STM32F4xx的NRF24L01驱动程序 提示:硬件平台基于STM32F427VIT6、NRF24L01模块 文章目录基于STM32F4xx的NRF24L01驱动程序前言一、NRF24L01简单介绍1,什么是NRF24L012,NRF24L01通信方法3,NRF24L01通信原理4,地址分配&通道分配问题二、STM32CubeMX配置三、添加底层文件1,添加.c/.h文件到工程中2,使用说明四,下载 前言 提示:本例程采用STM32CubeMX配置底层,采用硬件SPI方式驱动NRF24

qq_43603289的博客 2813

第10集:AIOps 平台架构设计!画出面试官最想看的系统全景图

本文介绍了如何将AIOps平台的六大功能模块整合为四层架构设计,并生成专业系统全景图。文章首先指出面试中架构设计能力的重要性,强调一张清晰的架构图能直观展现全局观。随后指导读者检查项目结构,准备绘图环境。核心部分详细拆解了四层架构:数据采集层(Prometheus、ELK等)、AI分析层(巡检、告警、预测等)、决策执行层(工作流引擎、自愈Agent)和展示交互层(API、控制台)。通过Python代码自动生成模块依赖关系图,并提供了面试讲解技巧。全文旨在帮助开发者在面试中系统性地展示项目架构设计能力。

qq_2937655951的博客 92

【C++ 真题】P1678 烦恼的高考志愿

cin>>m>>n;i<=m;i<=n;i<=n;l = mid+1;

Ω 526

学Simulink--基础微电网场景实例:基于Simulink的微电网并网/孤岛无缝切换控制仿真

本文完成了基于 Simulink 的微电网并网/孤岛无缝切换控制仿真,实现了:✅ 构建含双模式逆变器的微电网模型✅ 实现预同步 + Stateflow 逻辑的智能切换✅ 验证计划与非计划切换的性能边界✅ 证明“无缝”在工程上是可实现的。

amy_mhd的博客 101

P1678 烦恼的高考志愿

P1678题库链接:https://www.luogu.org/problem/P1678 难度:普及- 算法标签:模拟,贪心,排序,二分查找 1.朴素模拟 O(m*n) 得分30 先将m个学校的录取分数线排序,再用每名考生的成绩依次寻找第i个大学(若某个大学的录取分数线大于等于考生的成绩,即为第i个大学),该考生的成绩在第i-1个与第i个大学的录取分数线之间,用第i-1个和第i...

Cocoline0706的博客 456

从 SAP HANA 到 ABAP Cloud:彻底讲透 scalar function 的定位、实现方式与 Clean Core 实践

SAP项目中,scalar function是数据库层的重要计算单元,用于封装可复用的单值逻辑。不同于返回结果集的table function,它直接嵌入SQL表达式,适用于折扣率计算、数据标准化等场景。在SAP技术栈中,scalar function有三种形态:原生SQLScript函数、AMDP托管函数和CDS绑定函数。正确使用可提升查询性能,但需注意与procedure、table function的边界区分。AMDP scalar function是ABAP项目中的推荐实现方式,能确保函数生命周期受

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1664

Altium Designer系列: 软件系统参数配置保存

【Altium Designer实践】 软件系统参数配置保存 作者 CodeAllen ,转载请注明出处 目录设置中文菜单高亮模式设置文件关联pcb设置布线设置保存配置文件(复用) 设置中文菜单 DXP->Preferences 高亮模式设置 文件关联 pcb设置 布线设置 保存配置文件(复用) ......

CodeAllen嵌入式 2018

洛谷P1678 烦恼的高考志愿

教训 :选取值可能是边界,手写二分一定扩大边界,只要mid整除一定不会触及一开始设定l,r的值,即可能取得边界值的情况下,r应该取n+1,l取-1。发这一个洛谷题绝不是为了水,这限制条件我一个小白敲了一个小时才过......遂写一个题解纪念一下。尤其注意取不到和取边界值时,函数的情况。

m0_73654214的博客 518

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

输入:第一行、m所学校,n位学生第二行、m个预计录取分数第三行、n个学生估分成绩输出:最小不满意度之和。

2301_77014895的博客 490

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

题目概况 题目链接: https://www.luogu.com.cn/problem/P1678 难度: 普及- 题目分析 简化题目: 在两个有序数组中,找出第一个大于等于学生预估分的预计录取分,并计算差值累加。 涉及知识点: STL中的lower_bound函数、二分查找 解题思路: 首先将预计录取分数线的数组sort排序,以供二分查找,当然为了我们的调试方便,我们也可以将学生预估分数组进行排序。 然后我们枚举每一个学生预估分,使用lower_bound()函数找出第一个大于等于学生预估分的预计录取分,

lovely_cyqの小窝 1373

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

洛谷--P1678--烦恼的高考志愿

题目描述: 计算机竞赛小组的神牛V神终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任老t给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是v神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。 输入描述: 现有 m(m≤100000) 所学校,每所学校预计分数线是ai​(ai​≤106)。有 n(n≤100000) 位学生,估...

猩猩是个好程序员的博客 678

洛谷P1678 烦恼的高考志愿二分和STL题解

和这道题死刚了一下午… 对二分的认识加深了不少 但我还是好菜啊啊啊啊啊 以这道题的数据范围暴力肯定过不了,下面两道题都是O(ologn)可以过的。 基本的思路都是找到比分数大的最小的数,然后把它和前一个数(即比分数小的最大的数)与目标分数相减做比较即可。 1、现说偷懒的STL大法 用upper_bound函数找到比目标大的最小的数,返回其所在的位置,对比所有学校分数都低的数特判一下即可 #include <iostream> #include <cstdio> #include &l

Cather754715368的博客 782

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

洛谷官方题单P1678 烦恼的高考志愿

fxc1437936516的博客 564

洛谷_P1678 烦恼的高考志愿_python写法

【代码】洛谷_P1678 烦恼的高考志愿_python写法。

Hooray11的博客 426
上一篇: 洛谷 P1438 无聊的数列 题解 线段树
下一篇: Codeforces Round 920 (Div. 3) E. Eat the Chip 题解 博弈论 贪心
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值