提出 #53366745


ソースコード 拡げる

// #pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf (ll)1e18
#define pll pair<ll, ll>
#define vi vector<int>
#define vl vector<ll>
#define fi first
#define se second
#define lll __int128
const int N = 1e6 + 5;
struct H {
    static const int N = 1e6 + 5, P = 131;
    ll mod1 = 0, mod2 = 0; //双模数
    ll p1[N], h1[N], p2[N], h2[N];
    ll T1 = 1e5, T2 = 1e9;
    vl t1 = { 3, 19, 43, 49, 57, 69, 103, 109, 129, 151, 153, 169, 183, 189, 193, 207, 213, 237, 267, 271,
              279, 291, 297, 313, 333, 343, 357, 361, 363, 379, 391, 393, 403, 411, 417, 447, 459, 469 };
    vl t2 = { 7, 9, 21, 33, 87, 93, 97, 103, 123, 181, 207, 223, 241, 271, 289, 297, 321, 349, 363, 403,
              409, 411, 427, 433, 439, 447, 453, 459, 483, 513, 531, 579, 607, 613, 637, 663, 711, 753 };
    void init(string s) { //下标从1开始
        ll n = s.size() - 1;
        if (!mod1) {
            srand(time(0)); //随机模数
            mod1 = T1 + t1[rand() % t1.size()], mod2 = T2 + t2[rand() % t2.size()];
        }
        p1[0] = p2[0] = 1, h1[0] = h2[0] = 0;
        for(ll i = 1; i <= n; i++){
            p1[i] = p1[i - 1] * P % mod1;
            p2[i] = p2[i - 1] * P % mod2;
            h1[i] = (h1[i - 1] * P % mod1 + s[i]) % mod1;
            h2[i] = (h2[i - 1] * P % mod2 + s[i]) % mod2;
        }
    }
    pll get(ll l, ll r){
        return {(h1[r] + mod1 - h1[l - 1] * p1[r - l + 1] % mod1) % mod1,
                (h2[r] + mod2 - h2[l - 1] * p2[r - l + 1] % mod2) % mod2};
    }
    bool equal(ll l1, ll r1, ll l2, ll r2){
        return get(l1, r1) == get(l2, r2);
    }
} hx;
ll n;
string s[N];
void solve() {
    cin >> n;
    for (ll i = 1; i <= n; i++)
        cin >> s[i];
    map<pll, ll> mp;
    ll ans = 0;
    for (ll i = 1; i <= n; i++) {
        s[i] = '0' + s[i];
        hx.init(s[i]);
        for (ll j = 1; j < s[i].size(); j++) {
            pll h = hx.get(1, j);
            ans += mp[h];
        	mp[h]++;
        }
    }
    cout << ans << endl;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    solve();
    return 0;
}

提出情報

提出日時
問題 E - Yet Another Sigma Problem
ユーザ TopCloser
言語 C++ 20 (gcc 12.2)
得点 500
コード長 2239 Byte
結果 AC
実行時間 176 ms
メモリ 58188 KiB

コンパイルエラー

Main.cpp: In function ‘void solve()’:
Main.cpp:55:26: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   55 |         for (ll j = 1; j < s[i].size(); j++) {
      |                        ~~^~~~~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 2
AC × 48
セット名 テストケース
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 02_test_01.txt, 02_test_02.txt, 02_test_03.txt, 02_test_04.txt, 02_test_05.txt, 02_test_06.txt
ケース名 結果 実行時間 メモリ
00_sample_01.txt AC 15 ms 34804 KiB
00_sample_02.txt AC 14 ms 34900 KiB
01_test_01.txt AC 27 ms 34968 KiB
01_test_02.txt AC 27 ms 34896 KiB
01_test_03.txt AC 28 ms 34916 KiB
01_test_04.txt AC 28 ms 34916 KiB
01_test_05.txt AC 29 ms 34904 KiB
01_test_06.txt AC 28 ms 34840 KiB
01_test_07.txt AC 28 ms 34956 KiB
01_test_08.txt AC 50 ms 35288 KiB
01_test_09.txt AC 51 ms 35344 KiB
01_test_10.txt AC 51 ms 35344 KiB
01_test_11.txt AC 124 ms 47476 KiB
01_test_12.txt AC 123 ms 47364 KiB
01_test_13.txt AC 124 ms 47860 KiB
01_test_14.txt AC 127 ms 48028 KiB
01_test_15.txt AC 121 ms 47204 KiB
01_test_16.txt AC 27 ms 35268 KiB
01_test_17.txt AC 34 ms 34924 KiB
01_test_18.txt AC 28 ms 34844 KiB
01_test_19.txt AC 131 ms 48960 KiB
01_test_20.txt AC 34 ms 35032 KiB
01_test_21.txt AC 42 ms 34800 KiB
01_test_22.txt AC 42 ms 34884 KiB
01_test_23.txt AC 43 ms 34896 KiB
01_test_24.txt AC 38 ms 34960 KiB
01_test_25.txt AC 38 ms 35020 KiB
01_test_26.txt AC 38 ms 35032 KiB
01_test_27.txt AC 56 ms 36232 KiB
01_test_28.txt AC 57 ms 36232 KiB
01_test_29.txt AC 70 ms 37836 KiB
01_test_30.txt AC 69 ms 37924 KiB
01_test_31.txt AC 36 ms 35320 KiB
01_test_32.txt AC 37 ms 35444 KiB
01_test_33.txt AC 33 ms 35312 KiB
01_test_34.txt AC 169 ms 54248 KiB
01_test_35.txt AC 132 ms 49108 KiB
01_test_36.txt AC 176 ms 58188 KiB
01_test_37.txt AC 147 ms 53432 KiB
01_test_38.txt AC 15 ms 34860 KiB
01_test_39.txt AC 14 ms 34992 KiB
01_test_40.txt AC 26 ms 34916 KiB
02_test_01.txt AC 45 ms 39844 KiB
02_test_02.txt AC 91 ms 40724 KiB
02_test_03.txt AC 92 ms 40600 KiB
02_test_04.txt AC 87 ms 39892 KiB
02_test_05.txt AC 87 ms 39968 KiB
02_test_06.txt AC 86 ms 39884 KiB