zoukankan      html  css  js  c++  java
  • map映射巧用 A-B Problems

     

    A-B problem


    Description

      大家都非常熟悉 A+B Problem! 题目看多了也有审美疲劳,于是我舍弃了,改用 A-B problem! 题目是这样的:给出一串数以及一个数字 C,要求计算出所有 A-B=C 的数对 的个数。( 注意: 不同位置的数字一样的数对算不同的数对)
    Input Format

      第一行包括 2 个非负整数 N 和 C,中间用空格隔开。 第二行有 N 个整数,中间用空格隔开,作为要求处理的那串数。
    Output Format

      输出一行,表示该串数中包含的所有满足 A-B=C 的数对的个数。
    Sample Input
    4 1
    1 1 2 3
    Sample Output
    3
    Data Limit

      对于 50%的数据, N <= 2000; 对于 100%的数据, N <= 200000。

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<map>
    #define ll long long
    using namespace std;
    int main()
    {
        int n;
        ll c;
        scanf("%d%lld",&n,&c);
        ll cnt[222222];
        map<ll,int>mm;
        for(int i=0;i<n;i++)
        {
            scanf("%lld",&cnt[i]);
            mm[cnt[i]]++;
        }
        ll ans=0;
        for(int i=0;i<n;i++)
        {
            if(c!=0)
                ans+=mm[cnt[i]+c];
            if(c==0)
                ans+=mm[cnt[i]+c]-1;
        }
        printf("%lld
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    [BZOJ]1854: [Scoi2010]游戏
    [BZOJ]3531: [Sdoi2014]旅行
    2017-3-30校内训练
    Codeforces Round #407 (Div. 1)
    [BZOJ]1064: [Noi2008]假面舞会
    Educational Codeforces Round 18
    [BZOJ]1503: [NOI2004]郁闷的出纳员
    [BZOJ]1758: [Wc2010]重建计划
    2017-3-26四校联考
    [BZOJ]4644: 经典傻逼题
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/9502691.html
Copyright © 2011-2022 走看看