zoukankan      html  css  js  c++  java
  • Codeforces Round #627 (Div. 3) B

    题意:

    问一个数组中是否存在至少长为3的回文子数组(按下标排列,可不连续)。

    思路:

    找三个相同数或两个不连续的相同数。

    #include <bits/stdc++.h>
    using namespace std;
     
    const int M=5500;
     
    void solve(){
        int last[M]={0},cnt[M]={0};
     
        int n;cin>>n;
        int a[n+1];for(int i=1;i<=n;i++) cin>>a[i];
     
        for(int i=1;i<=n;i++){
            if((++cnt[a[i]]==3)||(last[a[i]]&&last[a[i]]!=i-1)){
                cout<<"YES
    ";
                return;
            }
            last[a[i]]=i;
        }
        
        cout<<"NO
    ";
    }
     
    int main(){
        int t;cin>>t;
        while(t--)
            solve();
        return 0;
    }

    更新 :

    二者实为一种情况。

    #include <bits/stdc++.h>
    using namespace std;
     
    const int M=5500;
     
    void solve(){
        int first[M]={0};
     
        int n;cin>>n;
        int a[n+1];for(int i=1;i<=n;i++) cin>>a[i];
     
        for(int i=1;i<=n;i++){
            if(first[a[i]]==0){
                first[a[i]]=i;
            }
            else if(first[a[i]]<i-1){
                cout<<"YES
    ";
                return;
            }
        }
    
        cout<<"NO
    ";
    }
     
    int main(){
        int t;cin>>t;
        while(t--)
            solve();
        return 0;
    }
  • 相关阅读:
    短URL
    Linux安装MySQL
    Ubuntu中安装MySQL
    安装交叉工具链arm-linux-gcc
    Linux安装—IP设置
    Linux内核概述
    Bash变量
    Shell登陆
    Linux—查看远程Linux系统运行时间
    Linux—查看路由
  • 原文地址:https://www.cnblogs.com/Kanoon/p/12483940.html
Copyright © 2011-2022 走看看