哈希.模拟离散化.AcWing.840

code:

1.set或map

#include<bits/stdc++.h>//xfl
using namespace std;
map<int,bool>a;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        int x;char c;
        cin>>c>>x;
        if(c=='I')a[x]=1;
        else{
            if(a[x])puts("Yes");
            else puts("No");
        }
    }
    return 0;
}
#include<bits/stdc++.h>//xfl
using namespace std;
int main()
{
    set<int>a;
    int n;
    scanf("%d\n",&n);
    char c;int x;
    for(int i=1;i<=n;++i)
    {
        scanf("%c %d\n",&c,&x);
        if(c=='I')a.insert(x);
        else{if(a.count(x))puts("Yes");
             else puts("No");}
    }
    return 0;
}

2.题目要求:哈希

cdoe:

#include<bits/stdc++.h>
using namespace std;
const int mod = 100007;
int h[mod+5],ne[mod+5],d[mod+5]cnt;
void add(int x)
{
    int u=(x%mod+mod)%mod;
    d[++cnt]=x;
    ne[cnt]=h[u];
    h[u]=cnt;
}
bool find(int x)
{
    int u=(x%mod+mod)%mod;
    for(int i=h[u];i;i=ne[i])
        if(d[i]==x)return 1;
    return 0;    
}
int main()
{
    int n,x;
    cin>>n;
    char c;
    for(int i=1;i<=n;++i)
    {
        cin>>c>>x;
        if(c=='I')add(x);
        else{
            if(find(x))puts("Yes");
            else puts("No");
        }
    }
    return 0;
}

 

posted @ 2020-12-27 16:49  纸上的彩虹  阅读(48)  评论(0)    收藏  举报