抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

传送门
显然只用考虑长度为33的等差序列,
ai,aj,aka_i,a_j,a_k为连续的33
发现2aj=ai+d+akd=ai+ak2*a_j=a_i+d+a_k-d=a_i+a_k
考虑枚举i,ji,j,判断存不存在kk
开一个桶记录a[i]a[i]
然后你发现O(n2)O(n^2)的暴力AA

#include <bits/stdc++.h>
#define MAXN 1000005
using namespace std;
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while (ch<'0'||ch>'9'){
        if (ch=='-') f=-1;
        ch=getchar();
    }
    while (ch>='0'&&ch<='9'){
        x=(x<<3)+(x<<1)+(ch^'0');
        ch=getchar();
    }
    return x*f;
}
int num[MAXN],cnt[MAXN];
int main(){
    int t=read();
    while (t--){
        int n=read();
        memset(cnt,0,sizeof(cnt));
        memset(num,0,sizeof(num));
        for (register int i=1;i<=n;++i){
            num[i]=read();
            cnt[num[i]]=i;
        }
        bool flag=false;
        for (register int i=1;i<=n;++i){
            for (register int j=i+1;j<=n;++j){
                if (cnt[num[j]-num[i]+num[j]]>j){
                    flag=true;
                    break;
                }
            }
            if (flag) break;
        }
        puts(flag?"Y":"N");
    }
}```

评论