zoukankan      html  css  js  c++  java
  • 洛谷 P1102 A−B数对

    题目描述

    出题是一件痛苦的事情!

    题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+BA+BA+B ProblemProblemProblem ,改用 A−BA-BAB 了哈哈!

    好吧,题目是这样的:给出一串数以及一个数字 CCC ,要求计算出所有 A−B=CA-B=CAB=C 的数对的个数。(不同位置的数字一样的数对算不同的数对)

    输入输出格式

    输入格式:

    第一行包括 222 个非负整数 NNN 和 CCC ,中间用空格隔开。

    第二行有 NNN 个整数,中间用空格隔开,作为要求处理的那串数。

    输出格式:

    输出一行,表示该串数中包含的所有满足 A−B=CA-B=CAB=C 的数对的个数。

    输入输出样例

    输入样例#1: 复制
    4 1
    1 1 2 3
    
    输出样例#1: 复制
    3

    说明

    对于 73%73\%73% 的数据, N≤2000N le 2000N2000 ;

    对于 100%100\%100% 的数据, N≤200000N le 200000N200000 。

    所有输入数据都在longint范围内。

    2017/4/29新添数据两组

    直接枚举是N^2算法,会超时。

    换一种思路,枚举b,计算b+c的个数。

    这是桶的思想,需要写离散化,博主太懒了,map大法好。

    #include<map>
    #include<cstdio>
    #include<iostream>
    using namespace std;
    const int N=200005;
    int n,c,a[N];
    long long ans;
    map<int,int>mp;
    int main()
    {
        scanf("%d%d",&n,&c);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",a+i);
            mp[a[i]]++;
        }
        for(int i=1;i<=n;i++)
            ans+=mp[a[i]+c];
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    字典生成式
    三元表达式
    迭代器
    装饰器
    闭包函数
    名称空间和作用域
    函数嵌套
    SQL Server 影响dbcc checkdb的 8 种因素
    SQL Server 对dbcc checkdb的优化
    SQL Server dbcc checkdb 修复
  • 原文地址:https://www.cnblogs.com/fantasquex/p/9342247.html
Copyright © 2011-2022 走看看