pairsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4207 Accepted Submission(s): 1504 Problem Description 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 pairs<a,b> that |x[b]−x[a]|≤k.(a<b)
Input The 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 x[i](−109≤x[i]≤109) , means the X coordinates.
Output For each case, output an integer means how many pairs<a,b> that |x[b]−x[a]|≤k .
Sample Input 2 5 5 -100 0 100 101 102 5 300 -100 0 100 101 102 Sample Output 3 10 思路: 把数组降序排序,这样我们从数组的第一个开始往后找就可以去掉绝对值符号了,对于每个xb,temp = xb - k < xa,只要二分找到恰好小于xa的那个temp,那么temp之前一直到xa的数就一定符合条件; 代码: #include<cstdio> |
hdu5178 pairs 二分
最新推荐文章于 2019-08-30 22:26:00 发布