2025四川省大学联赛(I)(哈希)

题目导航:https://codeforces.com/gym/105949/problem/I

`
const int P = 131;
const int MOD1 = 1e9 + 7;
const int MOD2 = 1e9 + 9;
map<pair<int, int>, int> mp;

signed main() {
int N;
cin >> N;

int ans = 0;
while (N--) {
    string s;
    cin >> s;

    int hash1 = 0, hash2 = 0;
    for (int i = s.size() - 1; i >= 0; i--) {
        int val = s[i] - 'a' + 1;
        hash1 = (hash1 * P + val) % MOD1;
        hash2 = (hash2 * P + val) % MOD2;
        pair<int, int> h = {hash1, hash2};
        if (!mp[h]) {
            mp[h] = 1;
            ans++;
        }
    }
}

cout << ans << endl;
return 0;

}
`
思路:储存string会MLE,考虑哈希转换成long long来存,问题是测试2反复过不了我还以为是思路出错(不该这么难吧)(然后随机了一堆字符串跟暴力代码对拍、偶尔发现几个小毛病)
……这玩意儿绝对……坑,单模哈希过不了花我这么多时间太坑了
把MOD改大,1e9+7,还是过不了,
无奈改了双模哈希存pair……丫的过了,坑死我了

posted @ 2025-07-19 14:22  yubai111  阅读(9)  评论(0)    收藏  举报