結果
問題 | No.430 文字列検索 |
ユーザー | pyonth |
提出日時 | 2020-08-13 04:32:58 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 270 ms / 2,000 ms |
コード長 | 902 bytes |
コンパイル時間 | 1,839 ms |
コンパイル使用メモリ | 208,492 KB |
実行使用メモリ | 32,000 KB |
最終ジャッジ日時 | 2024-11-10 00:45:49 |
合計ジャッジ時間 | 3,241 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 255 ms
32,000 KB |
testcase_02 | AC | 9 ms
5,248 KB |
testcase_03 | AC | 9 ms
5,248 KB |
testcase_04 | AC | 2 ms
5,248 KB |
testcase_05 | AC | 1 ms
5,248 KB |
testcase_06 | AC | 1 ms
5,248 KB |
testcase_07 | AC | 2 ms
5,248 KB |
testcase_08 | AC | 270 ms
31,616 KB |
testcase_09 | AC | 2 ms
5,248 KB |
testcase_10 | AC | 13 ms
6,400 KB |
testcase_11 | AC | 59 ms
8,192 KB |
testcase_12 | AC | 59 ms
8,192 KB |
testcase_13 | AC | 61 ms
8,320 KB |
testcase_14 | AC | 44 ms
6,144 KB |
testcase_15 | AC | 34 ms
5,248 KB |
testcase_16 | AC | 11 ms
5,248 KB |
testcase_17 | AC | 10 ms
5,248 KB |
ソースコード
#include <bits/stdc++.h> using namespace std; #define repl(i, l, r) for (ll i = (l); i < (r); i++) #define rep(i, n) repl(i, 0, n) using ll = long long; using u64 = std::uint_fast64_t; using size_type = std::uint_fast32_t; static constexpr __int128_t o = 0; static constexpr u64 MOD = (1uL << 61) - 1; static constexpr u64 base = 20200213; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(false); string s; int m; cin >> s >> m; int n = s.size(); map<__int128_t, int> M; __int128_t K = base; repl(i, 1, min(11, n + 1)) { __int128_t H = o; rep(j, i) H = (H * base + s[j]) % MOD; M[H]++; rep(j, n - i) { H = (H * base - s[j] * K + s[j + i] + MOD) % MOD; M[H]++; } K = K * base % MOD; } int ans = 0; while (m--) { string t; cin >> t; __int128_t now = o; for (auto c : t) now = (now * base + c) % MOD; ans += M[now]; } cout << ans << endl; return 0; }