1 条题解

  • 0
    @ 2023-3-8 15:33:27

    set

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    string s;
    set<string> se;
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n;
        getline(cin, s); // 读掉 n 后面的换行
        while (n--)
        {
            getline(cin, s);
            if (s[0] == 'a')
            {
                // add
                s = s.substr(4);
                se.insert(s);
            }
            else if (s[0] == 'f')
            {
                // find
                s = s.substr(5);
                if (se.find(s) == se.end())
                    cout << "no\n";
                else
                    cout << "yes\n";
            }
        }
        return 0;
    }
    

    哈希后 unordered_set

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    string s;
    unordered_set<int> se;
    const int P = 29;
    unsigned long long getHash(const string &s)
    {
        unsigned long long hash = 0;
        for (int i = 0; i < s.length(); i++)
            hash = hash * P + s[i];
        return hash;
    }
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n;
        getline(cin, s); // 读掉 n 后面的换行
        while (n--)
        {
            getline(cin, s);
            if (s[0] == 'a')
            {
                // add
                s = s.substr(4);
                se.insert(getHash(s));
            }
            else if (s[0] == 'f')
            {
                // find
                s = s.substr(5);
                if (se.find(getHash(s)) == se.end())
                    cout << "no\n";
                else
                    cout << "yes\n";
            }
        }
        return 0;
    }
    
    • 1

    信息

    ID
    676
    时间
    1000ms
    内存
    512MiB
    难度
    4
    标签
    递交数
    55
    已通过
    27
    上传者