问题标题: 酷町堂:1610哪里不对,我超时了

0
0
已解决
金一铭
金一铭
新手光能
新手光能

1610超时60分代码:

#include<bits/stdc++.h> 
using namespace std;
int main()
{
    int a,num[100001],sum=0;
    cin>>a;
    int p;
    cin>>p;
    for(int i=1;i<=a;i++)
    {
        cin>>num[i];
    }
    for(int i=1;i<=a;i++)
    {
        for(int j=1;j<=a;j++)
        if(num[i]-num[j]==p&&i!=j)sum++;
    }
    cout<<sum;
}

谁能帮我找错?


0
已采纳
张希晨
张希晨
修练者
修练者

这道题要用到map来写,具体与桶的思路一样直接模拟和乘法原理就行了。

 for(int i=1; i<=n; i++)
    {
        cin>>a[i];
        b[a[i]]++;//累加
    }
    for(int i=1; i<=n; i++)
    if(b[a[i]-m])
    {
        s+=b[a[i]]*b[a[i]-m];
        b[a[i]]=0;
    }

输出s

b不是数组!!!是这样定义的:

map<int,int>b;

头文件是#include <map>

0
我要回答