37 行含缺省源的 D 没看出问题
  • 板块学术版
  • 楼主da_ke
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/11/22 22:01
  • 上次更新2024/11/23 09:20:33
查看原帖
37 行含缺省源的 D 没看出问题
766675
da_ke楼主2024/11/22 22:01
#include <bits/stdc++.h>

#define i64 long long
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define fdn(i,r,l) for(int i=(r);i>=(l);i--)
#define pii pair<int,int>
using namespace std;

typedef long long ll;
typedef double db;
typedef __int128 i128;

std::mt19937 rnd(std::chrono::steady_clock::now().time_since_epoch().count());
std::mt19937_64 rnd64(std::chrono::steady_clock::now().time_since_epoch().count());

int main()
{
#ifndef ONLINE_JUDGE
    freopen("in.in","r",stdin);
    freopen("out.out","w",stdout);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    int n;
    cin>>n;
    vector<int> a(n+1),f(n+1,0),g(n+1,0),mp(n+1,0);
    rep(i,1,n) cin>>a[i];
    rep(i,2,n) if(a[i]==a[i-1]) f[i]=f[i-2]+2;
    rep(i,1,n)
    {
        if(mp[a[i]]<i-f[i]+1) g[i]=f[i];
        else g[i]=i-mp[a[i]];
        if(f[i]) mp[a[i]]=i;
    }
    int ans=0;
    rep(i,1,n) ans=max(ans,g[i]);
    cout<<ans<<endl;
}

对于每个数,找出上一个相同的即可。

2024/11/22 22:01
加载中...