zoukankan      html  css  js  c++  java
  • 已知一个序列A1.A2….An,给你一个整数K,找到满足所有Ai+Aj>=k的数对(i,j)的个数

    #include<bits/stdc++.h>
    
    using namespace std;
    #define ll long long
    #define maxn 100010
    /*
    已知一个序列A1.A2….An,给你一个整数K,找到满足所有Ai+Aj>=k的数对(i,j)的个数
    */
    int main()
    {
        int n,a[105],k,low,upp;
    
        while(cin >> n >> k){
            int ans1 = 0, ans2 = 0;
    
            for(int i=0; i<n; i++)
                cin >> a[i];
            sort(a,a+n);
            //ans1 = lower_bound(a,a+n,k)-a;
            //ans2 = upper_bound(a,a+n,k)-a;
    
            for(int i=0; i<n; i++){
                ans1 += n - (lower_bound(a+i+1,a+n,k-a[i]) - a);/*
                转化为A[j]>=k-A[i],在A[i]~A[n]中二分查找大于等于k-A[i]的第一个元素A[j],
                到数组末尾的所有元素都是所求解,累加起来即可。*/
                ans2 += n - (upper_bound(a+i+1,a+n,k-a[i]) - a);//(>)
            }   
            /*
            for(int i=0; i<n; i++){
                ans1 = lower_bound(a+i+1,a+n,k) - a;//找出这个数出现的第一个位置
                ans2 = upper_bound(a+i+1,a+n,k) - a;//找出这个数出现的最后一个位置的后一个位置
            }*/
            printf("%d %d
    ",ans1,ans2);
        }
        return 0;
    }
    二分
  • 相关阅读:
    正则表达式
    Event flow(事件流)
    Regular Expression(验证账号密码邮箱身份证)
    constructor&object 的联系与区别
    BMAP
    for each in 与for in与for of
    History of program
    脑图(作业)
    对DOM的认识
    BOM的认识
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8876649.html
Copyright © 2011-2022 走看看