请求hack
查看原帖
请求hack
226686
Herobrine6265楼主2024/8/15 12:32

rt

下面这个做法的复杂度应该大概在 O(n3log⁡n)\Omicron(n^3\log n) 左右

但是确实能 AC 洛谷的数据点(顺便一提UOJ过不去)

#include <iostream>

using namespace std;

int n, m[5005], cha[5005];

int main()
{
    ios::sync_with_stdio(false);
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> m[i];
        cha[i] = m[i] - m[i - 1];
    }
    int l = 5, r = n / 2, ans = 0;
    while (l <= r)
    {
        int i = (l + r) / 2;
        // cout << l << " " << r << ' ' << i << endl;
        bool check = false;
        for (int j = 1; j <= n - i * 2 + 1; j++)
        {
            for (int k = j + i; k <= n - i + 1; k++)
            {
                bool c = true;
                for (int t = 2; t <= i; t++)
                    if (cha[j + t - 1] != cha[k + t - 1])
                    {
                        c = false;
                        break;
                    }
                check |= c;
                if (check)
                    break;
            }
            if (check)
                break;
        }
        if (check)
        {
            l = i + 1;
            ans = max(ans, i);
        }
        else
            r = i - 1;
    }
    cout << ans;
    return 0;
}
2024/8/15 12:32
加载中...