• 二分法 codevs 1432 总数统计


    codevs 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;

     1 /*之前写了个读入优化,怎么都是得30分,改成cin后,直接就过了。
     2 做法:二分:先将输入的数字排序,然后从前面向后循环,二分后面的区间,找出si+sj<k的最大值,那么i+1--j的数都满足要求,枚举每一个i,累加即可
     3 */
     4 #define N 10010
     5 #include<iostream>
     6 using namespace std;
     7 #include<cstdio>
     8 #include<algorithm>
     9 long long n,m;
    10 long long k,con[N];
    11 long long find_ans(int x)
    12 {
    13     int l=x+1,r=n,mid;
    14     while(l<=r)
    15     {
    16         mid=((l+r)>>1);
    17         if(con[x]+con[mid]>k)
    18         r=mid-1;
    19         else l=mid+1;
    20     }
    21     return l-x-1;
    22 }
    23 int main()
    24 {
    25     cin>>n; 
    26     for(int i=1;i<=n;++i)
    27       cin>>con[i];
    28     sort(con+1,con+1+n);
    29     cin>>m;
    30     long long ans;
    31     while(m--)
    32     {
    33         ans=0;
    34         cin>>k;
    35         for(int i=1;i<=n;++i)
    36          ans+=find_ans(i);
    37         cout<<ans<<endl;
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    mysql 模糊查询LIKE 在tp中使用
    json字符串与 js对象互相转换
    1431. Kids With the Greatest Number of Candies
    1481. Least Number of Unique Integers after K Removals
    560. Subarray Sum Equals K
    1476. Subrectangle Queries
    1475. Final Prices With a Special Discount in a Shop
    网速和流量有什么关系
    计算网速的计算公式是什么
    php file_put_contents 函数的使用
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5585753.html
Copyright © 2020-2023  润新知