这题我为什么爆内存?
  • 板块灌水区
  • 楼主MAX_CURRY_JAMES
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/9/26 20:34
  • 上次更新2023/10/27 09:52:01
查看原帖
这题我为什么爆内存?
796776
MAX_CURRY_JAMES楼主2022/9/26 20:34

第7题 火柴 (GCOI2015五4) 查看测评数据信息 有N根火柴,第i根火柴的长度是Li。小明很喜欢正方形,所以小明希望用这些火柴拼出尽量多的正方形,但要同时满足如下条件:

1、一根火柴最多只能用在一个正方形中。

2、组成正方形的四根火柴,长度必须都相同。

给出N根火柴的长度,你的任务是计算:最多可以拼出多少个正方形?

输入格式 第一行,一个整数N。 第二行,N个整数,第i个整数是Li。

输出格式 一个整数,表示最多能拼出的正方形的数量

输入/输出例子1 输入:

7 1 1 2 2 1 1 2

输出:

1

输入/输出例子2 输入:

20 1 2 3 4 1 2 3 4 1 2 3 1 2 3 4 1 2 3 3 3

输出:

3

样例解释 样例1解释:只能拼出1个正方形,正方形的边长是1。样例2解释:能拼出3个正方形,正方形的边长是1、2、3。

【数据规模】 对于60%的数据, 4 <= N <= 50, 1 <= Li <= 1000。 对于100的数据,4 <= N <= 5000,1 <= Li <= 1000000000

#include<bits/stdc++.h>
using namespace std;
int n,x,a[10000005],b[10000000],sum;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        if(x<=10000000) a[x]++;
        else b[x-10000000]++;
    }
    for(int i=1;i<=10000000;i++)
    {
        sum+=a[i]/4;
    }
    for(int i=1;i<=100000;i++)
        sum+=b[i]/4;
    cout<<sum;
    return 0;
}

请帮我改一下

2022/9/26 20:34
加载中...