Codeforces#543 div2 B. Mike and Children(暴力?)

题目链接:http://codeforces.com/problemset/problem/1121/B

题意 给n个数 最多的对数 其中每一对(i,j)的ai+aj都相等(不知道怎么解释。。。。

判断的话 大概是4重循环 因为每次都选4个数嘛 两两相加判等 不过会TLE 而且并不知道哪些值用了哪些没用

就可以预处理记录a[i]+a[j]出现的次数 然后排序找最大的就好了

代码有点鬼畜。。

代码如下

#include <cstdio>
#include <algorithm>
#include <map>
#include <vector>
using namespace std;

const int maxn = 1010;
int a[maxn];
map<int, int> mp;
vector<int> G;

int main() {
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            mp[a[i] + a[j]]++;
            G.push_back(a[i] + a[j]);
        }
    }
    int ans = -1;
    for (int i = 0, sz = G.size(); i < sz; i++) {
        if (mp[G[i]] > ans) ans = mp[G[i]];
    }
    printf("%d\n", ans);
    return 0;
}
View Code

猜你喜欢

转载自www.cnblogs.com/Mrzdtz220/p/10486834.html