本题 MLE 最多 40 分求助,原因是数组开太大
查看原帖
本题 MLE 最多 40 分求助,原因是数组开太大
989398
hang2023楼主2023/9/11 19:14

评测记录

以上为评测记录,以下为代码:

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin >> n;
    int arr[6003][6003] = {0};
    for(int i=0;i<n;i++){
        int a,b,g,k;
        cin >> a >> b >> g >> k;
        for(int j=a;j<=g;j++){
            for(int l=b;l<=k;l++){
                arr[j][l] = i+1;
            }
        }
    }
    int a,b;
    cin >> a >> b;
    if(arr[a][b] == 0){
        cout << "-1";
    }else{
        cout << arr[a][b];
    }
    return 0;
}

主要原因在于第 7 行分配 arr 数组时,分配太大造成 MLE。事实上应该开 10005 的。

但是,数据范围规定,a,b,g,k≤105a,b,g,k\le 10^5。所以,必须数组开大,否则会产生 RE 错误。

这该怎么优化呢?

2023/9/11 19:14
加载中...