当前位置:   article > 正文

vector 开动态二维、三维数组_vector.reserve 开辟三维数组

vector.reserve 开辟三维数组
 vector<vector<int>> a(n, vector<int>(m)); // n 行 m 列 的二维数组

行和列的下标都是从0开始,即(0 ~ n - 1 , 0 ~ m - 1);  数组元素值默认为 0。

 vector<vector<int>> a(n, vector<int>(m, value)); // n 行 m 列 的二维数组

初始化为value。

例题:Problem - C - Codeforces

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define endl '\n'
  4. const int N = 2e5 + 10;
  5. int n, m;
  6. typedef pair<int, int>PII;
  7. int main() {
  8. ios::sync_with_stdio(false);
  9. cin.tie(0);
  10. int t;
  11. cin >> t;
  12. while(t--)
  13. {
  14. cin >> n >> m;
  15. vector<vector<int>> a(n, vector<int>(m)), b(n, vector<int>(m)); // n * m 的二维数组
  16. for(int i = 0; i < n; i++)
  17. for(int j = 0; j < m; j++)
  18. {
  19. cin >> a[i][j];
  20. b[i][j] = a[i][j];
  21. }
  22. for(int i = 0; i < n; i++)
  23. sort(a[i].begin(), a[i].end());
  24. int cnt = 0;
  25. bool ok = true;
  26. set<PII>st;
  27. for(int i = 0; i < n; i++)
  28. {
  29. cnt = 0;
  30. int l = 0, r = 0;
  31. for(int j = 0; j < m; j++)
  32. {
  33. if(a[i][j] != b[i][j])
  34. {
  35. cnt++;
  36. if(l == 0) l = j + 1;
  37. else r = j + 1;
  38. }
  39. }
  40. if(cnt >= 3) ok = false;
  41. else if(cnt == 2) st.insert({l, r});
  42. }
  43. if(!ok) cout << "-1" << endl;
  44. else
  45. {
  46. if(st.size() == 0) cout << 1 << " " << 1 << endl;
  47. else if(st.size() == 1) {
  48. int l, r;
  49. for(auto p : st){
  50. l = p.first, r = p.second;
  51. }
  52. ok = false;
  53. for(int i = 0; i < n; i++)
  54. if(b[i][l - 1] < b[i][r - 1]) ok = true;
  55. if(ok) cout << "-1" << endl;
  56. else cout << l << " " << r << endl;
  57. }
  58. else cout << "-1" << endl;
  59. }
  60. }
  61. return 0;
  62. }

vector 开三维数组

  1. // d[n + 1][m + 1][5] = {INF}
  2. vector< vector < vector<int> > > d(n + 1,vector< vector<int> >(m + 1,vector<int>(5,INF)));
  3. // vis[n + 1][m + 1][5] = {false}
  4. vector< vector < vector<bool> > > vis(n + 1,vector< vector<bool> >(m + 1,vector<bool>(5,false)));
  1. vector dp(N+1,vector(K+1,vector<long long>(D,-1)));
  2. dp[N][K][D]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/529040
推荐阅读
相关标签
  

闽ICP备14008679号