vector是这么用的咩

题目描述

时间限制:1s 空间限制:512M

题目描述:

给定一个 n×m 的矩阵,给定 q 组询问,每组询问输入两个数 x 和 y,表示查询矩阵 x 行 y 列的元素是什么。

输入格式:

第一行三个正整数 n, m, q;

接下来 n 行,每行 m 个正整数,表示矩阵中的元素。其中第 i 行第 j 列的元素表示 ��−1,�−1ai−1,j−1​。

接下来 q 行,每行两个正整数 x, y,表示询问第 x 行第 y 列的元素是什么。保证 0≤x

样例输入:

3 4 2 1 2 3 4 5 6 7 8 9 10 11 12 1 3 0 2

样例输出:

8 3

数据规模:

1≤�,�,�≤1051≤n,m,q≤105, 1≤�⋅�≤1051≤n⋅m≤105,0<��,�<1090<ai,j​<109

#include<bits/stdc++.h>
using namespace std;
vector<vector<int> > a;
int n,m,t,x,y;
int main(){
	cin>>n>>m>>t;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>a[i][j];
	for(int i=1;i<=t;i++){
		cin>>x>>y;
		cout<<a[x][y]<<endl;
	}
	return 0;
}
5 个赞

需要在输入 n,m 时进行 resize 操作。

按照你的来说的话就是 a.resize(n+1, vectot<int>(m+1)) 等同于开了一个 int a[n+1][m+1]

6 个赞

syx 大神 / 崇拜

3 个赞

lzy 卷神 /崇拜

3 个赞

不太建议v里套v,总感觉有点别扭,当然还是尊重个人喜好

2 个赞

我认为这道题不用vector
cin>>n>>m;int a[n+10][m+10]就可以了,但不是矩阵就不好说了

2 个赞

数据小确实可以用数组

3 个赞

n<=5e5,m<=5e5,nm<=5e5 115e5=5.5e6放得下

3 个赞

牛,崇拜大神

4 个赞

#include <bits/stdc++.h>
using namespace std;

int main() {
int n,m,q,x,y;
cin >> n >> m >> q;
int a[n][m];
for (int i =0;i < n;i++) {
for (int j =0;j < m;j++) {
cin >> a[i][j];
}
}
for (int i =0;i < q;i++) {
cin >> x >> y;
cout << a[y] << endl;
}
return 0;
}