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;
    }
  • 相关阅读:
    Spring系列-JDBC实例
    postman-记录cookies信息
    根据URL获取参数值得出json结果集,对外给一个接口让别人调用
    linux 软硬链接
    第一个shell程序
    Argparse简易教程
    SQLAlchemy 教程 —— 基础入门篇
    人机对战初体验—四子棋游戏
    python的Flask 介绍
    python的项目结构
  • 原文地址:https://www.cnblogs.com/fantasquex/p/9342247.html
Copyright © 2011-2022 走看看