首页 > 其他分享 >P1678 烦恼的高考志愿

P1678 烦恼的高考志愿

时间:2024-02-15 17:55:17浏览次数:29  
标签:curr P1678 int 高考 scanf mid abs res 志愿

题目链接:

本题容易想到用二分进行优化,但其中有几个细节需要注意一下。

注意点1、特判

if (curr < a[0]) res += abs(curr - a[0]);

(该测试点为 \(m=1,n=100000\) 且所有数组元素全为 \(0\))

2、可以二分出第一个 \(\geqslant b[i]\) 的数,则 \(\rm res\) 需要加的是 \(\rm abs(b[i]-a[l]\) 和 \(\rm abs(b[i]-a[l-1]\) 的最小值。

\(AC\) 代码:

#include <bits/stdc++.h>

using namespace std;
using LL = long long;

const int N = 1e5 + 5;

int m, n;
int a[N], b[N];
LL res;

int main()
{
    scanf("%d%d", &m, &n);
    for (int i = 0; i < m; i++) scanf("%d", &a[i]);
    for (int i = 0; i < n; i++) scanf("%d", &b[i]);
    sort(a, a + m);
    
    for (int i = 0; i < n; i++) {
        int curr = b[i], l = 0, r = m - 1;
        while (l < r) {
            int mid = l + r >> 1;
            if (a[mid] >= curr) r = mid;
            else l = mid + 1;
        }
        if (curr < a[0]) res += abs(a[0] - curr);
        else res += min(abs(a[l] - curr), abs(a[l - 1] - curr));
    }
    printf("%lld", res);
    return 0;
}

3、类似地,可以二分出第一个 \(\leqslant b[i]\) 的数,则 \(\rm res\) 需要加的是 \(\rm abs(b[i]-a[l]\) 和 \(\rm abs(b[i]-a[l+1]\) 的最小值,需要分辨注意。

\(AC\) 代码:

#include <bits/stdc++.h>

using namespace std;
using LL = long long;

const int N = 1e5 + 5;

int m, n;
int a[N], b[N];
LL res;

int main()
{
    scanf("%d%d", &m, &n);
    for (int i = 0; i < m; i++) scanf("%d", &a[i]);
    for (int i = 0; i < n; i++) scanf("%d", &b[i]);
    sort(a, a + m);
    
    for (int i = 0; i < n; i++) {
        int curr = b[i], l = 0, r = m - 1;
        while (l < r) {
            int mid = l + r + 1 >> 1;
            if (a[mid] <= curr) l = mid;
            else r = mid - 1;
        }
        if (curr < a[0]) res += abs(a[0] - curr);
        else res += min(abs(a[l] - curr), abs(a[l + 1] - curr));
    }
    printf("%lld", res);
    return 0;
}

标签:curr,P1678,int,高考,scanf,mid,abs,res,志愿
From: https://www.cnblogs.com/pangyou3s/p/18016442

相关文章

  • 学习笔记438—《赤兔之死》高考满分文章
    建安二十六年,公元221年,关羽走麦城,兵败遭擒,拒降,为孙权所害。其坐骑赤兔马为孙权赐予马忠。一日,马忠上表:赤兔马绝食数日,不久将亡。孙权大惊,急访江东名士伯喜。此人乃伯乐之后,人言其精通马语。马忠引伯喜回府,至槽间,但见赤兔马伏于地,哀嘶不止。众人不解,惟伯喜知之。伯喜遣散诸人,抚其......
  • 大学专业 格物自测!为高考,从高一准备自己的知识储备! 工学 工学 理学 理学 哲学 哲学 经
    大学专业格物自测!为高考,从高一准备自己的知识储备! 工学理学哲学经济学法学教育学农学医学管理学艺术学文学历史学 https://www.gewuxue.com/......
  • 新高考选考科目赋分方案
    新高考中赋分制是很重要的部分,不少同学对于高考赋分计算公式有疑问,想知道赋分制怎么算。本文将介绍新高考赋分制怎么计算,以及赋分制度哪些学生有利。赋分制是新高考改革的核心变化之一,也是保证高考公平的重要措施。为了更好地适应社会发展需求和培养人才,新高考对选考科目的赋分方......
  • 近些年高考 录取分数线 ,对比;
      --------------------------------------------------------------------------------------------------------------------------------近些年高考 录取分数线,对比:             ......
  • 【python爬虫课程设计】掌上高考——高校数据爬取+数据可视化
    一、选题的背景选择此选题是因为掌上高考是一个提供本科院校信息的网站,通过爬取该网站的数据,可以获取到各个本科院校的相关信息,如学校名称、所在地、专业设置等。通过对这些数据进行分析和可视化,可以帮助学生更好地了解各个本科院校的情况,为他们的升学选择提供参考。预期目标是通......
  • 【洛谷】P1678 烦恼的高考志愿 (二分)
    题目描述在这里:P1678这道题用二分的思路就很容易想出,先把学校分数排好序,根据不满意度的定义,我们只需要每次找到第一个大于学生成绩的学校分数,然后再和最后一个小于学生分数的院校分数分别与学生成绩做差再打绝对值进行比较,取最小的一个累加到ans里就好啦代码如下#include<iostr......
  • 从0到1:志愿者小程序开发心得
    背景调研志愿者服务小程序可以使志愿服务更加有序和高效,方便志愿者参与,也方便组织方管理和组织志愿服务活动;志愿者可以方便的在手机上报名,查看记录,获取积分,了解积分排行;同时提供积分商城模块,可以让志愿者使用通过参与活动所获得的积分来兑换各种奖励或福利.功能规划【用户端】活......
  • 2020年高考数学真题一题多解
    (2020理科数学20)已知\(A,B\)为椭圆\(E:\dfrac{x^2}{a^2}+y^2=1(a>1)\)的左右顶点,\(G\)为\(E\)上的上顶点,\(\overrightarrow{AG}\cdot\overrightarrow{GB}=8,P\)为直线\(x=6\)上的动点,\(PA\)与\(E\)的另一个交点为\(C\),\(PB\)与\(C\)的另一交点为\(D\).(1)求\(E\)的方程(2)......
  • 初中英语优秀范文100篇-012 My Experience of Being a Volunteer - 我的一次志愿者经
    PDF格式公众号回复关键字:SHCZFW012记忆树1Lastyear,Ipaidavisittothehomefortheagedwithmyclassmatesasvolunteers.翻译去年,我和我的同学作为志愿者去老年人之家探望了老人们。简化记忆探望老人句子结构这个句子可以分为四个主要部分:1状语短语:“La......
  • 汉中市大河坎中学体育高考生备战高考学训现状调查——论文
    摘要:近年来,随着高考体育生的人数持续上涨,汉中市大河坎中学的升学率却在持续下滑。因此,本文旨在通过调查2023届高三学生的学习情况,并结合多种研究方法,如文献资料法、访谈法、问卷调查法,深入探讨学校的招生、训练、文化学习、学校的管理等方面,以期获得更多有价值的信息,从而提升学校的......