Codeforces Round #546 (Div. 2) C. Nastya Is Transposing Matrices

灰太狼 2022-01-10 05:09 261阅读 0赞

链接:https://codeforces.com/contest/1136/problem/C

题意:

给两个矩阵,求能否通过矩阵转置从第一个矩阵变成第二个矩阵。

转置即i变成j。

思路:

因为无论怎么转,只要对角线上的各个值没有改变,即可以。

比赛的时候没想完全,一直把值加起来。。。

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. const int MAXN = 500 + 10;
  5. int a[MAXN][MAXN];
  6. int b[MAXN][MAXN];
  7. map<int, int> times[2 * MAXN];
  8. int main()
  9. {
  10. int n, m;
  11. int flag = 1;
  12. scanf("%d%d", &n, &m);
  13. for (int i = 1;i <= n;i++)
  14. {
  15. for (int j = 1; j <= m; j++)
  16. {
  17. scanf("%d", &a[i][j]);
  18. times[i + j - 1][a[i][j]]++;
  19. }
  20. }
  21. for (int i = 1;i <= n;i++)
  22. {
  23. for (int j = 1; j <= m; j++)
  24. {
  25. scanf("%d", &b[i][j]);
  26. if (times[i + j - 1][b[i][j]] <= 0)
  27. flag = 0;
  28. times[i + j - 1][b[i][j]]--;
  29. }
  30. }
  31. if (flag)
  32. printf("YES\n");
  33. else
  34. printf("NO\n");
  35. return 0;
  36. }

  

转载于:https://www.cnblogs.com/YDDDD/p/10516010.html

发表评论

表情:
评论列表 (有 0 条评论,261人围观)

还没有评论,来说两句吧...

相关阅读