首页 > 其他分享 >【做题笔记】板刷 AtCoder

【做题笔记】板刷 AtCoder

时间:2024-08-05 17:51:22浏览次数:13  
标签:AtCoder 板刷 mid 笔记 cin int while else define

[ABC364D] K-th Nearest

很好想的题目。

首先可以考虑到答案具有单调性,所以对于每一次询问用二分处理即可。

然后考虑如何判合法。我们需要找到所有 \(a_i-b\) 中 \(\le x\) 且 \(\ge -x\) 的个数。可以现将 \(a_i\) 排好序,最后用两个二分统计个数看是否 \(\ge k\) 即可。

时间复杂度 \(O(q \log^2 n)\)。

点击查看代码 ```cpp #include #define int long long #define rint register int #define For(i,l,r) for(rint i=l;i<=r;++i) #define FOR(i,r,l) for(rint i=r;i>=l;--i)

using namespace std;

const int N = 2e5 + 10;

int n, q, a[N], k, b;

bool check(int x) {
int L = n+1, R = 0;
int l = 1, r = n;
while(l <= r) {
int mid = l + r >> 1;
if(a[mid] - b <= x) {
R = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
l = 1, r = n;
while(l <= r) {
int mid = l + r >> 1;
if(a[mid] - b >= -x) {
L = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
return (R-L+1) >= k;
}

signed main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> q;
For(i,1,n) cin >> a[i];
sort(a + 1, a + n + 1);
while(q--) {
int l = 0, r = 2e8, ans = 0;
cin >> b >> k;
while(l <= r) {
int mid = l + r >> 1;
if(check(mid)) {
ans = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
cout << ans << '\n';
}
return 0;
}

</details>

标签:AtCoder,板刷,mid,笔记,cin,int,while,else,define
From: https://www.cnblogs.com/Daniel-yao/p/18343726

相关文章

  • 线程相关个人笔记总结
    什么是线程和进程进程是一个程序的实例,线程是进程中的实体,一个进程有多个线程线程的创建方式1.继承Thread类重写run() 创建一个类继承自Thread类,并重写run()方法来定义线程执行的任务。通过创建该类的实例并调用start()方法来启动线程。classMyThreadextends......
  • 学习笔记 韩顺平 零基础30天学会Java(2024.8.5)
    P460八大Wrapper类     黄色的父类是number,黑色的是自己独立的P461装箱和拆箱     手动装箱示例:                             intn1=100;                Intergerinterger=newInterger(n1);//......
  • 加固三防笔记本电脑:保护数据安全的首选设备
    随着信息技术的飞速发展,笔记本电脑早已成为现代生活中不可或缺的工具。然而,普通的笔记本电脑无法适应一些特殊的环境,在数据安全保护方面也有着一定的风险。加固三防笔记本电脑则是保护数据安全的首选设备。下面将介绍加固三防笔记本电脑的特点及应用。一、加固三防笔记本电脑......
  • 【Python学习手册(第四版)】学习笔记14-迭代器和列表解析(一)
    个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。本文主要以通俗易懂的语言介绍迭代器(文件迭代、手动迭代iter和next等),列表解析式包括基础知识包括写法、文件上使用列表解析、扩展列表解析语法等,对列表解析不懂的同学着重推荐......
  • HCIE学习笔记(持续补充更新):OSPF 五种报文、LSA
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、OSPF基础1、OSPF三张表2、OSPF建立邻接关系的过程2.1建立邻居关系2.2主/从关系协商、DD报文交换2.3、LSDB同步(LSA请求、LSA传输、LSA应答)二、OSPF报文OSPF报头1、OSPFHello报文(选DR、B......
  • pytorch学习笔记5 tensor 广播broadcasting
    不同shape直接加减,系统会自动做broadcasting操作先右对齐(小维度对齐)比如:Featuremaps:[4,32,14,14]Bias:[32,1,1]=>][1,32,1,1]=>[4,32,14,14]做到与Featuremaps的shape相同,才能进行相加广播扩展的时候只是做这样的操作,并不实质拷贝数据,以节省内存空间可广播的条件......
  • 结构开发笔记(一):外壳IP防水等级与IP防水铝壳体初步选型
    前言  做产品,需要选型外壳结构,本篇普及IP防护等级与基础铝合金外壳。 IPXX防护等级  IP等级(IngressProtectionrating)是用于描述电气设备外壳对异物(如尘埃、手指或其他固体物体)和水侵入的防护能力的国际标准。这个标准在全球范围内被广泛应用,以确保设备在各种环......
  • 《802.11无线网络权威指南-网络概论》-- 读书笔记2
    802.11网络包含四种主要实体元件工作站(Station)配置网络的目的,是为了在工作站间传送数据。所谓的工作站(station),是指配备无线网络界面的计算设备。基站(AccessPoint)802.11网络所使用的帧必须经过转换,方能被传递至其他不同类型的网络。具备无线至有线(wireless-to-wired)......
  • LearnOpenGL 笔记 -- VAO & VBO
    1前言VAO和VBO属于我们学习opengl最先接触的几个概念,最开始学习的时候有可能无法直观的理解这个概念的作用和使用方法。笔者也是opengl新手,在此记录学习的相关笔记,便于之后进行查看。本文主要参考learnopengl教程以及opengl官网中的用法和解释,文中的代码实例使用opengl3.3,过......
  • lg省选计划笔记-基础优化技巧1
    基础优化技巧1三分求单峰函数极值点丢弃极值点一定不在的点,注意不能用于非严格单调的函数。由于区间长度可以随便取,可以把分段点取得很近,这个时候就相当于二分斜率前面比0大,极值点处等于0,后面小于001分数规划略。模型特征:答案是比率形式(取对数可以把根式和次方转换为乘......