将所有的图书hash掉扔到map里面查询即可。
正解应该是要写哈希表。复杂度会更优,但是没有必要。。
#include <bits/stdc++.h> using namespace std; #define N 30010 #define ull unsigned long long #define base 233 map<ull, bool>vis; int n; void Hash_insert() { char c = getchar(); ull Hash = 0; while(c != '\n') { Hash = Hash * base + (ull)c; c = getchar(); } vis[Hash] = 1; } void Hash_query() { char c = getchar(); ull Hash = 0; while(c != '\n') { Hash = Hash * base + (ull)c; c = getchar(); } if(vis[Hash]) puts("yes"); else puts("no"); } int main() { scanf("%d", &n); while(n--) { char ch[10]; scanf("%s", ch); if(ch[0] == 'a') Hash_insert(); else Hash_query(); } }