1. 程式人生 > 實用技巧 >雜湊.模擬離散化.AcWing.840

雜湊.模擬離散化.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; }