답안 #986285

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
986285 2024-05-20T08:51:28 Z vjudge1 Palindromic Partitions (CEOI17_palindromic) C++17
0 / 100
1 ms 2396 KB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ld long double
#define ull unsigned long long
#define pii pair<int,int>
#define pll pair<long long, long long>
#define fi first
#define se second
#define all(a) (a).begin(), (a).end()
#define pb push_back
#define lwb lower_bound
#define upb upper_bound

#define TASKNAME "NAME"

void init()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    ///freopen(TASKNAME".INP","r",stdin); freopen(TASKNAME".OUT","w",stdout);
}

const int SZ = 1e6+5;
const ll INF = INT_MAX / 2, MOD = 1e9+7, INFLL = 2e18, BASE = 311;
const double epsilon = 1e-3;

ll t, n, h[SZ], p[SZ];
string s;

void buildHash()
{
    h[0] = 0;
    p[0] = 1;
    for(int i = 1; i <= n; i++)
    {
        p[i] = (p[i-1] * BASE) % MOD;
        h[i] = (h[i-1] * BASE + int(s[i])) % MOD;
    }
}

ll getHash(int lo, int hi)
{
    return ( (h[hi] - h[lo-1]*p[hi - lo + 1]) % MOD + MOD) % MOD;
}

int main()
{
    init();
    cin >> t;
    while(t--)
    {
        cin >> s;
        n = s.length();
        s = " " + s;
        buildHash();
        int i = 1, u = 1, j = n, v = n;
        int res = 1;
        while(i < j)
        {
            if(getHash(u, i) == getHash(j, v))
            {
                res += 2;
                u = i+1;
                v = j-1;
            }
            i++;
            j--;
        }
        cout << res << '\n';
    }
}

# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2396 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2396 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2396 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2396 KB Output isn't correct
2 Halted 0 ms 0 KB -