RE 0分球条

P3613 【深基15.例2】寄包柜

rainbow_MMM @ 2025-01-10 20:59:49

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,a,b) for(int i=a;i>=b;i--)
#define exit(a)   return a;
#define endl   '\n'
using namespace std;
vector<int>v[100005]; 
int main(){
    int n,Q;
    cin>>n>>Q;
    while(Q--){
        int op;
        cin>>op;
        if(op==1){
            int i,j,k;
            cin>>i>>j>>k;
            v[i][j]=k;
        }
        else{
            int i,j;
            cin>>i>>j;
            cout<<v[i][j]<<endl;
        }
    }
    exit(0);
}

rt......


by xlpri @ 2025-01-10 21:22:32

RE最常见的情况就是数组开小了,但vector再加上1e7准MLE..


by xlpri @ 2025-01-10 21:26:59

最好直接用map+数组做,但是写不好容易爆栈


by nnh915 @ 2025-01-10 21:27:29

@rainbow_MMM vector不像普通的数组,它初始化为没有元素,需要通过 push_back() 添加才可以,所以不能直接像桶一样去使用。


by nnh915 @ 2025-01-10 21:29:32

所以如果在vector数组没有增加元素的情况下,访问了的是越界的位置,所以报 RE 的错误。


by nnh915 @ 2025-01-10 21:31:27

这道题好像不适合用 vector 这个容器,可以看看题解来学习如何使用 stl 中的 map 压缩存储空间。


by xlpri @ 2025-01-10 21:32:52

可以试试先做个map映射,key值等于所求柜号,value值等于所求柜号所在的输入顺序的位数


|