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……丫的过了,坑死我了

浙公网安备 33010602011771号