pairs
john has n points on the x axis, and their coordinates are (x[i],0),(i=0,1,2,…,n−1). he wants to know how many pairsthat |x[b]−x[a]|≤k.(athe first line contains a single integer t (about 5), indicating the number of cases.
each test case begins with two integers n,k(1≤n≤100000,1≤k≤109).
next n lines contain an integer xi, means the x coordinates.
for each case, output an integer means how many pairsthat |x[b]−x[a]|≤k.
題意:就是能找到多少對啊a[i],a[j] 滿足 a[j] -a[i] <= k.;
思路:首先你肯定能想到要將其排序,然後得話,如果我們從小的開始找,就每次二分就行了!
#include
#define maxn 300000+100
using
namespace std;
typedef
long
long ll;
int a[maxn]
;int n,k;
int t;
ll num;
intbs
(int l,
int r,
int tag)
else
}return ans;
}int
main()
sort
(a,a+n)
;for
(int i=
0;i) num +=bs
(i+1
,n-1
,a[i]
+k);
cout<}}
sdut 二分練習
problem description 給你乙個序列,然後給你m個元素,讓你從序列中找出與每個元素最接近的數字輸出來,如果有兩個就輸出兩個。input 多組輸入,第一行給你兩個數n 0 n 10000000 m 0 m n 接下來是數列的n個數,然後再輸入m個元素,讓你找出最接近每個元素的值。如果有...
sdut 二分練習
二分練習 time limit 1000 ms memory limit 65536 kib problem description 給你乙個序列,然後給你m個元素,讓你從序列中找出與每個元素最接近的數字輸出來,如果有兩個就輸出兩個。input 多組輸入,第一行給你兩個數n 0 n 10000000...
H 二分練習
description 給你乙個序列,然後給你m個元素,讓你從序列中找出與每個元素最接近的數字輸出來,如果有兩個就輸出兩個。input 多組輸入,第一行給你兩個數n 0 n 10000000 m 0 m n 接下來是數列的n個數,然後再輸入m個元素,讓你找出最接近每個元素的值。如果有兩個,按從小到大...