zoukankan      html  css  js  c++  java
  • HDU 5178:pairs(二分,lower_bound和upper_bound)

                                                      pairs

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 4157    Accepted Submission(s): 1481

    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

     

    题意

    有x个数,求出这x个数中有多少对数相减的绝对值小于等于k

    思路

    AC代码

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <math.h>
    #include <limits.h>
    #include <map>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <set>
    #include <string>
    #define ll long long
    #define ms(a) memset(a,0,sizeof(a))
    #define pi acos(-1.0)
    #define INF 0x3f3f3f3f
    const double E=exp(1);
    const int maxn=1e6+10;
    using namespace std;
    int a[maxn];
    int main(int argc, char const *argv[])
    {
    	ios::sync_with_stdio(false);
    	int t;
    	int n,k;
    	cin>>t;
    	while(t--)
    	{
    		cin>>n>>k;
    		for (int i = 1; i <=n; ++i)
    		{
    			cin>>a[i];
    		}
    		sort(a+1,a+n+1);
    		ll ans=0;
    		for(int i=1;i<=n;i++)
    		{
    			int l=lower_bound(a+1+i,a+1+n,a[i]-k)-a-1;
    			int r=upper_bound(a+i+1,a+1+n,a[i]+k)-a-1;
    			ans+=r-l;
    		}
    		cout<<ans<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    解决ccSvcHst.exe CPU占用超50%的问题,及其缘由
    Windows API一日一练(55)FlushFileBuffers和SetFilePointer函数
    SVD神秘值分解
    Debug目录下没有.exe文件
    OpenStreetMap初探(一)——了解OpenStreetMap
    cocostudio——js 3 final控件事件
    [Android] ImageView.ScaleType设置图解
    c++中sort()及qsort()的使用方法总结
    SVD神秘值分解
    胡na娜、少年和恩师-写在甲午冬的仅仅言片语及感想
  • 原文地址:https://www.cnblogs.com/Friends-A/p/10324436.html
Copyright © 2011-2022 走看看