Codeforces Gym 100203G Good elements 暴力乱搞

原题链接:http://codeforces.com/gym/100203/attachments/download/1702/statements.pdf

题解

考虑暴力的复杂度是O(n^3),所以我们需要记录所有的ai+aj,如果当前考虑到了ak,那么就去前面寻找ai,使得ak-ai是我们记录过的和。整个算法的复杂度O(n^2)。

代码

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define MAX_N 5555
#define MAX_A 1000006
using namespace std;

bool vis[MAX_A];
int n;
int a[MAX_N];
int ans=0;

int x=100005;

int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);

        for (int j = 0; j < i; j++) {
            if (vis[a[i] - a[j] + 2 * x]) {
                ans++;
                break;
            }
        }
        for (int j = 0; j <= i; j++)vis[a[i] + a[j] + 2 * x] = 1;
    }
    printf("%d
", ans);
    return 0;
}
原文地址:https://www.cnblogs.com/HarryGuo2012/p/4733133.html