首页 > 其他分享 >做题记录 - AT Typical 90 T7

做题记录 - AT Typical 90 T7

时间:2024-03-29 21:13:24浏览次数:36  
标签:ch space T7 ll bound le 90 include Typical

ATCoder Typical 90 T7 CP Classes

这道题没有英文版

题意

\(ABC\)竞技编程补习班中有 \(N\) 个班级。第 \(i \space \space(1 \le i \le N)\) 个班级想要招收对象排名为 \(A_i\) 的学生。

现在有 \(Q\) 个学生参加补习班。第 \(j \space \space(1 \le j \le Q)\) 个学生的排名为 \(B_j\) 。每个学生对进入与自己不匹配的等级的班级感到不满。关于每个学生,对不满度的定义如下:

对象排名 \(a\) 和自己的排名 \(b\) 的差的绝对值,即 \(|a - b|\)。

请输出每个学生的不满度的最小值。

\[\begin{aligned} 1 \le N \le 300000\\ 1 \le Q \le 300000\\ 0 \le A_i \le 10^9\\ 0 \le B_i \le 10^9\\ 输入均为整数 \end{aligned} \]

大致思路

很明显,要排序后二分查找出最接近的那个。

algorithm头文件中的lower_bound()upper_bound函数即可:

upper_bound

lower_bound

我们根据题意选用lower_bound

for (int i = 1; i <= Q; ++i) {
        int idx = lower_bound(a + 1, a + n + 1, b[i]) - a;
        cout << min(abs(b[i] - a[idx]),
                    abs(b[i] - a[idx - 1]))
                  << '\n';
}

但是lower_bound[1]在找不到是会返回尾指针,所以我们需要判断一下是否合法即可。

AC Code

// G.cpp 3s 1G
// 007 - CP Classes
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <iostream>

using namespace std;
using ll = long long;
const int N = 3e6 + 5;
const int INF = 0x7fffffff;

ll n, Q;
ll a[N], b[N];

inline ll read() {
    ll x = 0;
    int f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        if (ch == '-') f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}

signed main() {
    // #1 : Input

    n = read();
    for (int i = 1; i <= n; ++i) {
        a[i] = read();
    }
    Q = read();
    for (int i = 1; i <= Q; ++i) {
        b[i] = read();
    }

    // #2 : Sort
    sort(a + 1, a + n + 1);

    // #3 : Binary Search
    for (int i = 1; i <= Q; ++i) {
        int idx = lower_bound(a + 1, a + n + 1, b[i]) - a;
        cout << min(idx <= n ? abs(b[i] - a[idx]) : INF,
                    idx >= 2 ? abs(b[i] - a[idx - 1]) : INF)
             << '\n';
    }
    return 0;
}


  1. 关于lower_bound的用法,参见用法 ↩︎

标签:ch,space,T7,ll,bound,le,90,include,Typical
From: https://www.cnblogs.com/lstylus/p/18104614

相关文章

  • AI计算平台设计原理图:901-基于3U VPX的图像数据AI计算平台
    基于3UVPX的图像数据AI计算平台  一、产品概述   设备基于3U VPX的导冷结构,集成FPGA接口预处理卡,GPU板卡、飞腾ARM处理卡,实现光纤、差分电口或者Camera link的图像接入,FPGA信号预处理,GPU AI计算,飞腾ARM的采集管理存储。二、系统组成   系......
  • AI 异构计算机设计原理图:902-基于6U VPX 高带宽PCIe的GPU AI 异构计算机
    基于6UVPX高带宽PCIe的GPUAI异构计算机 一、产品概述   基于6U 6槽VPX高带宽PCIe的GPUAI异构计算机以PCIe总线为架构,通过高带宽的PCIe互联,实现主控计算板、GPU AI板卡,FPGA接口板,存储板的PCIe高带宽互联访问,PCIe支持3.0规范,X8或者X16带宽。主板......
  • 无人车网关案例:记SV900无人清扫车网关的现场应用
    ​随着无人驾驶技术的不断发展,无人车辆已经开始广泛应用于物流配送、环境保洁、巡逻监控等众多领域,助力城市运营更加高效智能。而要实现无人车辆的安全可靠运行,关键在于选择一款性能卓越的车载网络通信系统.在这一背景下,星创易联推出了SV900无人车网关系列产品。它集5G/4G网络......
  • 定位时长缩减90%:酷家乐如何提升系统故障根因分析准确率?
    一分钟精华速览酷家乐开发魔方语言的目的是解决其2BSaaS系统在复杂微服务架构下的故障定位难题,以提升系统稳定性并加速故障恢复。由于原监控工具操作复杂,需要人工逐项点击且依赖经验,导致处理效率低下。魔方语言通过自动化根因分析,显著提升了故障处理的覆盖率和准确率,从而减少了......
  • 6.2GHz默秒全!酷睿i9-14900KS图赏
    Intel日前发布了酷睿14代家族的顶级限量版本——i9-14900KS,国行定价6299元。它在历史上第一次将PC处理器的加速频率做到了惊人的6.2GHz,超频更是破9.1GHz!连创四大世界记录。现在,这款处理器已经来到我们评测室,下面为大家带来图赏。i9-14900KS可以看作是i9-14900K的特挑加速版,同样......
  • 如果“2X”的补码是“90H”,那么X的真值是
    一下是我的解题思路步骤先将90转换为二进制         1248 1248  9-8=1 1-4  1-2  1-1=0        10 01  0000(0-1,2,4,8都不能相减)符位为1负先转反码除符位其余反转:11101111再转补码+1:1+1=2近1为1  ......
  • 901-深入浅出Python量化交易实战的配套视频和代码(段小手)中文PDF+源代码(源文件)
    小瓦的故事——从零开始本书源于一个真实的故事,故事的主角是一位名叫小瓦的姑娘。小瓦出生在一个普通的家庭,父母都是老实淳朴的普通人,靠着并不丰厚的收入把小瓦养育成人。18岁那年,小瓦考上了一所不好不坏的大学,所学专业是一个就业前景算不上理想的专业。再加上她本身也谈不......
  • CF1904C的题解
    (一)不太好想。(我看了题解才会)当\(k>2\)时,可以选两次相同的\(i\)和\(j\)。再将生成的数做差。当\(k=1\)时,直接\(Θ(n^2)\)枚举。当\(k=2\)时,先枚举第一次的\(i\)和\(j\),再用lower_bound()实现查找第二次选择的数。时间复杂度\(Θ(n^2\log_2{n})\)。注......
  • COMP9021编程原理
    COMP9021编程原理2024年第1学期课业1价值13马克,第7周星期一上午10点到期1.一般事项1.1目标本任务的目的是:•培养解决问题的技能。•以中型Python程序的形式设计和实现问题的解决方案。•练习算术计算、测试、重复、列表和字符串的使用。•使用程序编程。1.2标记该课业价......
  • 监控工具-jvisualvm.exe-入门,监控tomcat7的jmx、jstatd
    1、添加JMX1.1、catalina-jmx-remote.jar 放在Tomcat的 lib 目录下catalina-jmx-remote.jar 的确切位置可能因Tomcat版本和发行版而异,但通常它应该被放置在Tomcat的 lib 目录下 1.2、catalina.sh设置JVM参数对于Linux/Unix,编辑 catalina.sh 文件......