답안 #928679

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
928679 2024-02-17T01:45:22 Z Regulus Palindromic Partitions (CEOI17_palindromic) C++17
100 / 100
195 ms 28640 KB
#include <bits/stdc++.h>
#define IO ios::sync_with_stdio(false);cin.tie(0);
#define debug(x) cerr << #x << " = " << (x) << ' '
#define bug(x) cerr << (x) << ' '
#define endl cerr << '\n'
#define all(v) (v).begin(), (v).end()
#define SZ(v) (ll)(v).size()
#define lowbit(x) (x)&-(x)
#define pb emplace_back
#define F first
#define S second
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;

const int N = 1e6+5;
const int MOD = 19993;
const int MOD2 = 1e9+7;
ll sum[N], p[N];
string s;

int main(void)
{ IO
    int T, n, i;

    cin >> T;
    do {
        cin >> s, n = SZ(s);
        s = " " + s;
        for (i=1; i <= n; ++i)
            sum[i] = (sum[i-1] * MOD % MOD2 + s[i]) % MOD2;
        for (i=1, p[0]=1; i <= n; ++i) p[i] = p[i-1] * MOD % MOD2;

        //for (i=1; i <= n; ++i) bug(sum[i]); endl;
        int ans = 0, L = 1, R = n;
        while (L <= R)
        {
            for (i=0; i < n; ++i)
            {
                ll tmp = (sum[L+i] - (sum[L-1] * p[i+1] % MOD2) + MOD2) % MOD2;
                ll tmp2 = (sum[R] - (sum[R-i-1] * p[i+1] % MOD2) + MOD2) % MOD2;
                //debug(tmp), debug(tmp2), endl;
                if (tmp == tmp2) break;
            }
            if (R-L == i) ++ans;
            else ans += 2;
            //debug(L), debug(R), debug(i), endl;
            L += i + 1, R -= i + 1;
        }

        cout << ans << '\n';
    } while (--T);

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 2 ms 604 KB Output is correct
11 Correct 1 ms 604 KB Output is correct
12 Correct 2 ms 604 KB Output is correct
13 Correct 2 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 2 ms 604 KB Output is correct
11 Correct 1 ms 604 KB Output is correct
12 Correct 2 ms 604 KB Output is correct
13 Correct 2 ms 604 KB Output is correct
14 Correct 195 ms 24440 KB Output is correct
15 Correct 104 ms 22984 KB Output is correct
16 Correct 180 ms 28640 KB Output is correct
17 Correct 104 ms 15508 KB Output is correct