欢迎来到 xht37 的博客

CF1119A Ilya and a Colorful Walk

题目地址:CF1119A Ilya and a Colorful Walk

\(O(n^2)\) 肯定过不掉

\(p_i\)从下标 \(1\) 开始连续出现 \(i\) 的个数

那么对于每一个 \(i\) ,在 \(i\) 之前离 \(i\) 最远的与 \(a_i\) 不同的数的距离显然为 \(i-p_{a_i}-1\)

\(max\) 就好了

#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 6;
int n, a[N], p[N], ans;

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    for (int i = 1; i <= n; i++)
        if (p[a[i]] == i - 1) p[a[i]] = i;
    for (int i = 1; i <= n; i++)
        ans = max(ans, i - p[a[i]] - 1);
    cout << ans << endl;
    return 0;
}
posted @ 2019-04-11 00:35 xht37 阅读(...) 评论(...) 编辑 收藏