内存太大,求优化
查看原帖
内存太大,求优化
1312537
wfirstzhang楼主2024/5/1 17:22

虽然内存已经控制在 40MB40 \texttt{MB} 以内,但是我想再优化一下。

题解上使用了 sort 的做法,我也了解了。

质数太小了会 WA:

72pts(P=9147431, Q=9897661)\texttt{72pts(P=9147431, Q=9897661)}

91pts(P=268435399, Q=997777771)\texttt{91pts(P=268435399, Q=997777771)}

Code:

#include <iostream>
#include <string>
using namespace std;
long N, cnt = 0;
bool exist[805306368];//质数为805306357, 2147483647
string strs;
unsigned long Hash(string str) {
    unsigned long Hash_res = 0x811c9dc5, len = str.size();
    for(int i = 0; i < len; i++)
    {
        Hash_res *= 0x1000193;
        Hash_res = (Hash_res ^ (unsigned long)str[i]) % 2147483647;
    }
    return Hash_res % 805306357;
}
int main(){
    cin >> N;
    for(int i = 0; i < N; i++)
    {
        cin >> strs;
        if(!exist[Hash(strs)])
            cnt++,
            exist[Hash(strs)] = 1;
    }
    cout << cnt << endl;
    return 0;
}
2024/5/1 17:22
加载中...