1.解题思路
看到题目我的第一想法是使用二维数组,开一个a[100001][100001],写完直接运行不了,通过学习洛谷题解发现使用STL中的map容器可以避免空间复杂度过大的问题,特别是理解了二维map的值,例如map<int,map<int,int> >a,a[i][j]的值就是第三个int,个人理解a[i][j]就相当于第二层map的key。
2.通过代码
#include<cstdio>
#include<iostream>
#include<map>
using namespace std;
map<int,map<int,int> >a;
int main(){
int n,q,i,j,k,flag;
scanf("%d %d",&n,&q);
for(int l=1;l<=q;l++){
scanf("%d %d %d",&flag,&i,&j);
if(flag==1)
{
scanf("%d",&k);
a[i][j]=k;
}
else
{
printf("%d\n",a[i][j]);
}
}
return 0;
}