题解:CF895B XK Segments

我的 CSDN 原文地址,转载请标明

这道题好水,就是不好理解而已......

思路

暴力的复杂度是 n 2 n^2 n2 显然不可能通过

不难想到先排序,然后再使用二分查找。

lower_bound(begin, end, num) 可以返回一个有序序列 的不小于 n u m num num 的值的地址,不存在则返回 e n d end end。常用用法:通过返回的地址减去起始地址 b e g i n begin begin,得到找到数字在数组中的下标。

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, x, k, a[100010], cnt;
int main() {
	ios :: sync_with_stdio(false);
	cin >> n >> x >> k;
	for (int i = 1; i <= n; i ++) cin >> a[i];
	sort(a + 1, a + n + 1);
	for (int i = 1; i <= n; i ++) {
		int l = (a[i] - 1) / x, r = l + k;
		cnt += lower_bound(a + 1, a + n + 1, (r + 1) * x) - lower_bound(a + 1, a + n + 1, max(r * x, a[i]));
	}
	cout << cnt << endl; 
	return 0;
}
相关推荐
AbandonForce1 小时前
哈希表(HashTable,散列表)个人理解
开发语言·数据结构·c++·散列表
样例过了就是过了1 小时前
LeetCode热题100 编辑距离
数据结构·c++·算法·leetcode·动态规划
z200509301 小时前
C++中位图和布隆过滤器的一些面试题
开发语言·c++
khalil10202 小时前
代码随想录算法训练营Day-46 动态规划13 | 647. 回文子串、516.最长回文子序列、动态规划总结
数据结构·c++·算法·leetcode·动态规划·回文子串·回文子序列
挨踢ren3 小时前
单例模式:C++实现与多线程安全
c++·设计模式
用户805533698033 小时前
现代Qt开发教程(新手篇)1.14——日志
c++·qt
艾莉丝努力练剑4 小时前
【Linux网络】Linux 网络编程入门:TCP Socket 编程(下)
linux·运维·服务器·网络·c++·tcp/ip
宵时待雨4 小时前
linux笔记归纳4:进程概念
linux·运维·服务器·c++·笔记
凯瑟琳.奥古斯特4 小时前
力扣2760 C++滑动窗口解法
数据结构·c++·算法·leetcode·职场和发展
ximu_polaris4 小时前
设计模式(C++)-行为型模式-访问者模式
c++·设计模式·访问者模式