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;
}
上一篇:VB6 GDI+ 入门教程[2] GDI+初始化


下一篇:SEO优化之 主页上加上nofollow