首页 > 其他分享 >P1102 A-B 数对的三种解法

P1102 A-B 数对的三种解法

时间:2023-11-26 16:34:03浏览次数:28  
标签:d% P1102 int 复杂度 数对 scanf 解法 200005

1.
利用map实现速查,优点是代码简洁,缺点是速度慢,内存大

#include<bits/stdc++.h>
using namespace std;
int a[200005]={0};
int main()
{
    int n,c;
    scanf("%d%d",&n,&c);

    map<int,int> maps;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        maps[a[i]]++;
    }

    long long ans=0;
    for(int i=1;i<=n;i++)
    {
        ans+=maps[a[i]+c];
    }
    printf("%lld\n",ans);
    return 0;
}

2.
遍历数组,二分查找,总时间复杂度为O(nlogn)

#include<bits/stdc++.h>
using namespace std;
int a[200005]={0};
int main()
{
    int n,c;
    scanf("%d%d",&n,&c);

    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    long long ans=0;
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
    {
        int x=a[i]+c;
        int l=i,r=n+1;
        while(l<r-1)
        {
            int mid=(l+r)/2;
            if(a[mid]>=x)r=mid;
            else l=mid;
        }
        int left=r;
        l=i,r=n+1;
        while(l<r-1)
        {
            int mid=(l+r)/2;
            if(a[mid]<=x)l=mid;
            else r=mid;

        }
        int right=l;
        ans+=right-left+1;
        //printf("%d %d : %d\n",left,right,ans);
    }
    printf("%lld\n",ans);
    return 0;
}

3.
双指针法,时间复杂度O(n),常数项为4

标签:d%,P1102,int,复杂度,数对,scanf,解法,200005
From: https://www.cnblogs.com/pure4knowledge/p/17857434.html

相关文章

  • c++ 为什么引入函数对象?
    C++引入函数对象主要是因为函数对象具有以下优势:函数对象可以有自己的状态:我们可以在类中定义状态变量,这样一个函数对象在多次的调用中可以共享这个状态。但是函数调用没这种优势,除非它使用全局变量来保存状态。函数对象有自己特有的类型,而普通函数无类型可言:这种特性对......
  • 【3.0】Python高级之函数对象与闭包函数
    【一】函数对象函数对象指的是函数可以被当做数据来处理,具体可以分为四个方面的使用【1】函数可以被引用#定义一个函数defadd(x,y):returnx+y#将函数地址绑定给一个变量func=add#通过这个变量找到对应的地址,从而调用函数res=func(1,2)print(res)......
  • 变长子网划分问题的二叉树解法
    计网的变长子网划分、计组的变长操作码划分、数据结构的哈夫曼编码,都是前缀编码的本质(变长操作码的二叉树解法我还在琢磨中)【二叉树解法】每条从叶结点到根节点的路径上有且只有一个被分配的结点:【例】现将一个IP网络划分成4个子网,若其中一个子网是172.16.1.128/26,则下列网络中......
  • 【教3妹学编程-算法题】数位和相等数对的最大和
    3妹:2哥,你有没有看到新闻“18岁父亲为4岁儿子落户现身亲子鉴定”2哥 :啥?18岁就当爹啦?3妹:确切的说是14岁好吧。2哥 :哎,想我30了,还是个单身狗。3妹:别急啊,2嫂肯定在某个地方等着你去娶她呢。又不是结婚越早越好。2哥:是啊,这孩子14岁当爹,也太早了。3妹:2哥,你找女朋友有什么条件没有......
  • 非常经典的一道SQL报错注入题目[极客大挑战 2019]HardSQL 1(两种解法!)
    题目环境:<br/>没错,又是我,这群该死的黑客竟然如此厉害,所以我回去爆肝SQL注入,这次,再也没有人能拿到我的flag了做了好多这个作者出的题了,看来又要上强度了判断注入类型username:adminpassword:1这里把参数password作为注入点<br/>1'<br/>单引号的字符型注入万能密码注......
  • f通过new关键词进行函数调用,之后无论如何都会返回一个与F关联的普通对象(因为不是通过
    varF=function(){};Object.prototype.a=function(){};Function.prototype.b=function(){};varf=newF();关于这段代码的描述,正确的是:Af能取到a,但取不到bBf能取到a,bCF能取到b,不能取到aDF能取到a,不能取到b正确答案:A网上有一道美团外卖的面试题是这样的:Function......
  • 模数为素数幂的同余方程解法
    本节考虑形如:f(x)=anxn+an-1xn-1+...+a1x1+a0≡0modpk的方程,其中a>=2,p为素数,p不整除a。方程解法步骤:1.求出f(x)≡0modp的解x≡cmodp2.设f(x)≡0modp2 的解为x≡=c+yp2-1求出y,带入解得x的值3.设 f(x)≡0modpk 的解为x≡c+yk-1求出y,带入解得x的值y的......
  • [护网杯 2018]easy_tornado 1(两种解法!)
    题目环境:<br/><br/>发现有三个txt文本文件/flag.txt<br/>/welcome.txt<br/>/hints.txt依此点开<br/>flag在/fllllllllllllag文件中<br/>在hints.txt文件中发现md5计算md5(cookie_secret+md5(filename))并且三个文件中都存在filehash(文件名被哈希算法加密32位小......
  • 【竞赛题】找出强数对的最大异或值 I
    1题目: 给你一个下标从0开始的整数数组nums。如果一对整数x和y满足以下条件,则称其为强数对:|x-y|<=min(x,y)你需要从nums中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(XOR)值是在该数组所有强数对中的最大值。返回数组nums所有可能的强......
  • [极客大挑战 2019]BuyFlag 1(两种解法)
    题目环境:<br/><br/><br/>FLAGNEEDYOUR100000000MONEYflag需要你的100000000元F12瞅瞅源代码:<br/>if(isset($_POST['password'])){$password=$_POST['password'];if(is_numeric($password)){echo"pas......