zoukankan      html  css  js  c++  java
  • Codeforces Round #561 (Div. 2) A Tale of Two Lands 【二分】

    A Tale of Two Lands

     题目链接(点击)

    The legend of the foundation of Vectorland talks of two integers xx and yy. Centuries ago, the array king placed two markers at points |x||x| and |y||y| on the number line and conquered all the land in between (including the endpoints), which he declared to be Arrayland. Many years later, the vector king placed markers at points |x−y||x−y| and |x+y||x+y| and conquered all the land in between (including the endpoints), which he declared to be Vectorland. He did so in such a way that the land of Arrayland was completely inside (including the endpoints) the land of Vectorland.

    Here |z||z| denotes the absolute value of zz.

    Now, Jose is stuck on a question of his history exam: "What are the values of xx and yy?" Jose doesn't know the answer, but he believes he has narrowed the possible answers down to nn integers a1,a2,…,ana1,a2,…,an. Now, he wants to know the number of unordered pairs formed by two different elements from these nn integers such that the legend could be true if xx and yy were equal to these two values. Note that it is possible that Jose is wrong, and that no pairs could possibly make the legend true.

    Input

    The first line contains a single integer nn (2≤n≤2⋅1052≤n≤2⋅105)  — the number of choices.

    The second line contains nn pairwise distinct integers a1,a2,…,ana1,a2,…,an (−109≤ai≤109−109≤ai≤109) — the choices Jose is considering.

    Output

    Print a single integer number — the number of unordered pairs {x,y}{x,y} formed by different numbers from Jose's choices that could make the legend true.

    Examples

    Input

    3
    2 5 -3
    

    Output

    2
    

    Input

    2
    3 6
    

    Output

    1
    

    Note

    Consider the first sample. For the pair {2,5}{2,5}, the situation looks as follows, with the Arrayland markers at |2|=2|2|=2 and |5|=5|5|=5, while the Vectorland markers are located at |2−5|=3|2−5|=3 and |2+5|=7|2+5|=7:

    The legend is not true in this case, because the interval [2,3][2,3] is not conquered by Vectorland. For the pair {5,−3}{5,−3} the situation looks as follows, with Arrayland consisting of the interval [3,5][3,5] and Vectorland consisting of the interval [2,8][2,8]:

    As Vectorland completely contains Arrayland, the legend is true. It can also be shown that the legend is true for the pair {2,−3}{2,−3}, for a total of two pairs.

    In the second sample, the only pair is {3,6}{3,6}, and the situation looks as follows:

    Note that even though Arrayland and Vectorland share 33 as endpoint, we still consider Arrayland to be completely inside of Vectorland.

    题意:

    给出一些坐标(均在x轴上) 从中任意选取两个点a、b  要求满足: 区间 [a,b]在区间 [abs(a+b) , abs(a-b)]内  输出能够组成的个数

    思路:

        (1)无论点的坐标值是正或负与结果都无关 所以把所有数转换成正数存进去

        (2)把所有坐标值排序

        (3)假设两个坐标值a<b  若满足2*a>=b 那么就符合题意要求 并且a和b之间的任意一个坐标值与b组合都符合要求

    注意:

       将坐标值变成绝对值后 可能出现坐标值相等的情况 但也要把它们看成两种情况 因为输入的时候是一正一负 所以两次都要算

    AC代码:

    二分模板题,但写二分的时候没注意用ans标记前一个mid值 导致错误

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long int LL;
    const int MAX=2e5;
    int a[MAX+5],n;
    LL sum;
    int main()
    {
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
            a[i]=abs(a[i]);
        }
        sort(a,a+n);
        for(int i=0;i<n;i++){
            int l=0,r=i,ans=-1;
            while(l<=r){
                int mid=(l+r)/2;
                if(a[mid]*2>=a[i]){
                    r=mid-1;
                    ans=mid;
                }
                else{
                    l=mid+1;
                }
            }
            if(ans!=-1){
                sum+=(i-ans);
            }
        }
        printf("%lld
    ",sum);
        return 0;
    }
    
  • 相关阅读:
    第四章 变量的三大特征,垃圾回收机制,可变类型和不可变类型的简单表述
    第三章 有关变量的理解
    第二章 编程语言的分类及优缺点的分析
    IIS拓展访问的文件格式
    JS之HTTP请求
    HTTP请求
    HtmlAgilityPack解析html
    支付宝支付功能开发
    Web.config配置ActiveReports
    数据库连接字符串
  • 原文地址:https://www.cnblogs.com/ldu-xingjiahui/p/12407430.html
Copyright © 2011-2022 走看看