haoxiarice 发表于 2025-3-8 18:20:04

为是么提交就显示mle啊

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;


int main ()
{
        int b;
        scanf("%d",&b);
        vector<int>arr;
        int cnt=0;//记录循环次数
        int element;
        char a;
        int capacity=0;//数组容量
        while(cnt<b)
        {
                cin>>element;
                arr.push_back(element);
                cin.get(a);
                if(a=='\n')
                        cnt++;       
                capacity++;
        }
       
        sort(arr.begin(),arr.end());
       
        int m,n;
        for(int index=0;index<capacity-1;index++)
        {
                if(arr!=arr-1&&arr!=arr)
                {
                        m= arr+1;
                }
                if(arr==arr)
                {
                        n=arr;
                }
               
        }
       
        printf("%d %d",m,n);
        return 0;
}

haoxiarice 发表于 2025-3-8 18:20:41

luogu.com.cn/problem/P8598

FishC 发表于 2025-3-8 18:21:00

MLE 是指内存限制超出(Memory Limit Exceeded)。这种错误提示表示你的程序可能占用了过多的内存资源。您在这里可能是因为动态数组 vector 的使用方式不当,导致内存超出限制。

出现 MLE 的可能原因:

[*]无限循环导致 vector 无限增长。
[*]未对输入进行有效的约束处理。
[*]没有针对输入进行有效的大小限定。


建议:

[*]确保您的程序可以正确地退出循环。
[*]考虑限制输入的大小或设置合理的边界条件。
[*]仔细检查 cnt 和 capacity 的使用逻辑。


请尝试这样的小修改来验证是否有因为循环条件错误,而使输入和记录超出预期的可能性。完整的代码部分似乎有遗漏,请确保所有逻辑闭合及相关部分代码完整性。希望能帮助到您!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

haoxiarice 发表于 2025-3-16 23:32:39

FishC 发表于 2025-3-8 18:21
MLE 是指内存限制超出(Memory Limit Exceeded)。这种错误提示表示你的程序可能占用了过多的内存资源。您 ...

这个问题已经解决,是我以为标准输入结尾是\n,但事实不是,我以\n来判断循环是错误的
页: [1]
查看完整版本: 为是么提交就显示mle啊