1 条题解

  • 0
    @ 2025-8-24 21:20:58

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar OsvaldoAsensioLopez
    Estar a punto de comenzar una nueva vida en la universidad española

    搬运于2025-08-24 21:20:57,当前版本为作者最后更新于2017-12-22 15:33:25,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这一题将A-B=C转换成A-C=B,首先将A数组每个元素出现的次数统计起来,用map映射,最后将A数组每次减一个C,再将A数组扫一遍,将所有映射的次数和加起来就是答案

        #include <iostream>
        #include <map>
        using namespace std;
        typedef long long LL;
        LL a[200001];
        map<LL,LL> m;//建立一个数字到出现次数的映射 map<num,times>
        //A-B=C --> A-C=B
        int main() {
            int n;
            LL c;
            LL ans=0;
            cin >> n >> c;
            for(int i=1;i<=n;i++) {
                cin >> a[i];
                m[a[i]]++;
                a[i]-=c;    
            } 
            for(int i=1;i<=n;i++) ans+=m[a[i]];
            cout << ans << endl;
            return 0;
    }
    
    • 1

    信息

    ID
    104
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    1
    已通过
    1
    上传者