• 1432 总数统计


    1432 总数统计

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 钻石 Diamond
     
     
     
    题目描述 Description

    给出n个数,统计两两之和小于k的方案数之和。

    输入描述 Input Description

    第一行一个数n,表示数字的个数;
    第二行到第n + 1行,每行一个不超过2,000,000,000的数k;
    第n + 2行一个数m,表示m个问题;
    第n + 3行到第n + m + 2行,每行一个数m,询问表示n中两两组合不超过m的组
    合的个数;

    输出描述 Output Description

    输出m行,每行对应一个答案

    样例输入 Sample Input

    3

    1

    2

    3

    2

    2

    3

    样例输出 Sample Output

    0

    1

    数据范围及提示 Data Size & Hint

    30%的数据1 ≤ n ≤ 100, 1 ≤ m ≤ 50, k ≤ 2000;
    100%的数据 1 ≤ n ≤ 10000, 1 ≤ m ≤ 100, k ≤ 2,000,000,000;

    分类标签 Tags 

    代码

    /*
    二分搜索--类似归并 
    */
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    long long num[101000],ans,n,m,k;
    long long div(long long x){
        long long l=1,r=n+1;
        while(r-l>1){
            long long mid=(l+r>>1);
            if(num[mid]<=x) l=mid;
            else r=mid;
        }
        return l;
    }
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>num[i];
        }
        sort(num+1,num+n+1);
        cin>>m;
        while(m--){
            cin>>k;ans=0;
            for(int i=1;num[i]<=k/2;i++){
                long long x=div(k-num[i]);
                if(x>i) ans+=x-i;
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    例题
    经典模型
    定义
    洛谷p2564生日礼物andp2627修建草坪
    转自大佬的线段树
    c++String类
    随机数
    JVM知识点总结
    task5 模型融合 打卡
    task4 建模与调参 打卡
  • 原文地址:https://www.cnblogs.com/shenben/p/5536919.html
Copyright © 2020-2023  润新知