xdedb @ 2024-01-13 14:28:19
这道题主要是我发现改了一点点我就对了,但是我不知道为什么这么改,感觉是关于vector数组有关系的 先附上我的代码,全re
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
vector<vector<int>> gui(n+1);
for(int i=0;i<m;i++){
int num;
cin>>num;
if(num==1){
int a,b,c;
cin>>a>>b>>c;
if(b>gui[a].size()-1){//但是这里改成b+1>gui[a].size()就是对的了
gui[a].resize(b+1);
}
gui[a][b]=c;
}else{
int a,b;
cin>>a>>b;
cout<<gui[a][b]<<endl;
}
}
}
但是把第十四行右边的-1移到左边的+1就是全AC了 下面附上我的测评记录 全RE: 全AC: 然后我自己摸索一下就是全re是因为进入不了if语句求大佬指教一下!
by xdedb @ 2024-01-13 14:30:42
我发现测评记录好像没有发上来我补一下 re记录:https://www.luogu.com.cn/record/142676369 AC记录: https://www.luogu.com.cn/record/142675888
by Ew_Cors @ 2024-01-13 14:33:23
gui[a].size()-1
基本上所有的 STL 容器的 size 函数都会返回无符号整型。
如果你的 size 为 0,那么减 1 之后就自然溢出了,你接下来的 resize 就不会执行,下面的赋值语句就会 RE。
by xdedb @ 2024-01-13 14:38:27
@Ew_Cors 奥奥,原来如此,谢谢大佬!