杭電5178 二分練習!

2021-10-02 15:48:34 字數 1034 閱讀 2936

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個元素,讓你找出最接近每個元素的值。如果有兩個,按從小到大...