哈希求调
  • 板块P1102 A-B 数对
  • 楼主SukiYuri
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/21 17:43
  • 上次更新2024/1/21 20:19:43
查看原帖
哈希求调
798144
SukiYuri楼主2024/1/21 17:43

测试点2,3TLE

#include<bits/stdc++.h>
using namespace std;
const int p=1000003,maxn=2*1e5+5;
long long a[maxn],nxt[maxn],hd[p],cnt=0;
inline void insert(const long long k){
    a[++cnt]=k;
    nxt[cnt]=hd[k%p];
    hd[k%p]=cnt;
}
inline int query(const long long k){
    int r=k%p,res=0;
    for(int i=hd[r];i;i=nxt[i])
        if(a[i]==k)++res;
    return res;
}
int main(){
    int n,c;
    scanf("%d%d",&n,&c);
    for(int i=1;i<=n;++i){
        long long u;
        scanf("%lld",&u);
        insert(u);
    }
    int ans=0;
    for(int i=1;i<=n;++i){
        ans+=query(a[i]+c);
    }
    printf("%d",ans);
    return 0;
}
2024/1/21 17:43
加载中...