OKM_IS @ 2023-11-22 18:53:09
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n,q;
cin>>n>>q;
vector<vector<int> > a(100005);
int op1,op2,op3,op4;
for(int i=1;i<=q;i++){
cin>>op1;
if(op1==1){
cin>>op2>>op3>>op4;
if(a[op2].size()<op3)a[op2].resize(op3+5);//for(int i=1;i<=op3-a[op2].size();i++)a[op2].push_back(0);
a[op2][op3-1]=op4;
}
if(op1==2){
cin>>op2>>op3;
cout<<a[op2][op3-1]<<'\n';
}
}
return 0;
}
被注释掉的部分是连续push_back,但是提交就全RE,而不是TLE(除了subtask#1可以通过),这是为什么呢?求解答!
by StenvenPig @ 2023-11-22 19:39:33
@OKM_IS 1是俩循环i会死循环 2是你这种vector写法好像就是要用resize(少用这个的蒟蒻不太懂)
by OKM_IS @ 2023-11-22 20:02:34
@StenvenPig 不应该啊。。。用push_back的话,subtask#1是可以过的,而且样例也可以,但是前五个检测点就RE了。然后i的话应该是局部变量,第二个for那里结束的话i就会变成之前的值才对,而且死循环应该TLE吧。。。
by StenvenPig @ 2023-11-22 20:09:31
@OKM_IS vector<st> v[100010];我这个能push_back进去,定的写法的问题吧
by StenvenPig @ 2023-11-22 20:10:36
@OKM_IS 二维不应该是这种吗 vector<int> v[100010];
by OKM_IS @ 2023-11-22 21:43:21
@StenvenPig 看了下书上说两种写法都可以,但是应该不是这个问题导致RE
by OKM_IS @ 2023-11-22 22:17:17
已解决.....i增大的同时,size也在扩大,循环的退出条件写的比较复杂导致的问题