P3156 【深基15.例1】询问学号 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
map容器可以建立key-value的映射,可当作哈希表使用,时间复杂度是(logn)
相比于普通数组更节省空间,不会开额外不需要的内存空间导致mle
代码如下(map可以写二维的!!!):
#include <iostream>
#include <map>
using namespace std;
map<int, map<int, int> > a;
int main()
{
int n, m;
int t, i, j, k;
cin >> n >> m;
while(m--)
{
cin >> t >> i >> j;
if (t == 1)
{
cin >> k;
a[i][j] = k;
}
else cout << a[i][j] << endl;
}
return 0;
}
题目中n和ai都是1e5级别的因此可以开一个longlong将二维压缩为一维
代码如下:
#include <iostream>
#include <map>
using namespace std;
map<long long, int> a;
int main()
{
int n, m;
int t, i, j, k;
cin >> n >> m;
while(m--)
{
cin >> t >> i >> j;
if (t == 1)
{
cin >> k;
a[i * 100000 + j] = k;
}
else cout << a[i * 100000 + j] << endl;
}
return 0;
}