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

简介: 洛谷 P1678 烦恼的高考志愿

1. 题目描述

image.png

2. 思路分析

将每个学校的分数线用sort()升序排序,再二分查找每个学校的分数线,通过二分找到每个同学估分附近的分数线

最后特判一下:

如果每个同学的估分都比最低分数线低。直接让最低的分数线减同学估分,然后取绝对值即可,

如果每个同学的估分都比最高分数线高。直接让最高的分数线减同学估分,然后取绝对值即可。

3. 代码实现

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5 + 10;
int a[N], b[N], n, m;
ll sum;

int main()
{
   
    cin >> m >> n;
    for (int i = 1; i <= m; i++) cin >> a[i];
    for (int i = 1; i <= n; i++) cin >> b[i];
    sort(a + 1, a + m + 1);
    for (int i = 1; i <= n; i++)
    {
   
        int l = 0, r = m + 1;
        while (l + 1 < r)
        {
   
            int mid = (l + r) >> 1;
            if (a[mid] <= b[i]) l = mid;
            else r = mid;
        }
        if (b[i] <= a[1])  //特判同学估分比分数线数都低的情况
            sum += abs(a[1] - b[i]); 
        else if (b[i] >= a[m])  //特判同学估分比分数线都高的情况
            sum += abs(a[m] - b[i]);
        else
            sum += min(abs(a[l] - b[i]), abs(a[r] - b[i]));
    }
    cout << sum << endl;
    return 0;
}

image.png

相关文章
蓝桥省赛前晚复习数学知识
蓝桥省赛前晚复习数学知识
|
4月前
|
安全 前端开发 算法
IT专业入门,高考假期预习指南
IT专业入门,高考假期预习指南
42 1
IT专业入门,高考假期预习指南
|
C语言
【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马
【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马
105 0
|
存储 人工智能 算法
【2021年蓝桥省赛真题】赛前最后冲刺,省一我来啦
【2021年蓝桥省赛真题】赛前最后冲刺,省一我来啦
336 0
|
Android开发
LeetCode 双周赛 98,脑筋急转弯转不过来!
大家好,我是小彭。 昨晚是 LeetCode 第 98 场双周赛,你参加了吗?这场周赛需要脑筋急转弯,转不过来 Medium 就会变成 Hard,转得过来就变成 Easy。
85 0
|
算法
每日一题冲刺大厂 第二十四天 开心的金明
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题为了让大家练到各种各样的题目,熟悉各种题型,一年以后,蜕变成为一个不一样的自己!
100 0
试题历届真题跑步锻炼【第十一届】【省赛】【B组】(C++)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝每天都锻炼身体。正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
147 0
|
机器学习/深度学习 算法 测试技术
面试官在“逗”你系列:到底应该怎么爬楼梯?! | 牛气冲天新年征文
算法题是在面试过程中考察候选人逻辑思维能力、手写代码能力的一种方式,因为有一句古话说的好:“说一千道一万,不如写段代码看一看”。今天我们就来个单刀直入,直奔主题,从一个真实面试题到底怎么爬楼梯来聊一聊算法中的动态规划 。
203 0