蒟蒻站外题求助*2
  • 板块灌水区
  • 楼主GPUawa
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/8/7 10:55
  • 上次更新2023/11/3 05:27:48
查看原帖
蒟蒻站外题求助*2
781701
GPUawa楼主2023/8/7 10:55

RT

题目描述

小明有n张珍贵的卡片。每张卡片用整数表示它的类别,同一个类别可能有多张卡片。

对于类别为p的卡片,且p≠0,那么p可以和−p组成一套卡片。对于类别为0的卡片,可以和任意类别的卡片组成一套卡片。每张卡片至多只能和一张卡片组成一套卡片。

请问,小明最多可以组成多少套卡片?

题目输入 第一行一个n,表示卡片的张数。

第二行是n个整数,Ai表示第i张卡片的类别。

题目输出 输出一个整数,表示最多可以组成多少套卡片。

样例输入1

4

1 -1 2 0

样例输出1

2

样例输入2

6

1 2 3 3 0 0

样例输出2

2

样例输入3

5

0 0 0 0 0

样例输出3

2 蒟蒻的代码

#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 100005;
int arr[MAXN];
int main() {
    int n,ans=0;
    cin >> n;
    if (n == 0) {
        cout << 0 << endl;
        return 0;
    }
    for (int i = 0; i < n; i++) {
        int value;
        cin >> value;
        arr[value + MAXN / 2]++;
    }
    for (int i = 1; i < MAXN; i++) {
        if (i == MAXN / 2) {
            ans += arr[i] / 2;
        } else {
            ans += min(arr[i], arr[MAXN - i]);
        }
    }
    cout << ans << endl;
    return 0;
}
//一直过不了第一个样例
2023/8/7 10:55
加载中...