1 条题解
-
0
自动搬运
来自洛谷,原作者为

Nuyoah_awa
事实证明,你没让我失望。搬运于
2025-08-24 22:46:15,当前版本为作者最后更新于2023-04-05 18:04:10,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目大意
给定一个 的矩阵,每个点有三个值,每次操作可将一个点的一个值改变,在每次操作过后,请你输出图片是否左右对称?
题目分析
我们可以按照题目要求每次更改一个数,再看是否对称。
时间复杂度 。
我们发现,每回只改一个值,所以我们可以记一个 表示矩阵共有 对点左右不对称,每次更改一个数后有如下四种情况:
- 原来这个点对称,后来这个点依旧对称(改了跟没改一样): 不变。
- 原来这个点对称,后来这个点不对称(改不对称了):。
- 原来这个点不对称,后来这个点依不旧对称(好像改了,但是没完全改): 不变。
- 原来这个点不对称,后来这个点对称(改对称了):。
每次改完后,如果 即没有点不对称,输出
Yes。否则说明有点不对称,输出
No。code
#include <iostream> #include <cstdio> using namespace std; const int N = 105, MOD = 256; struct node{ int a[4]; }p[N][N]; int n, m, q, x, y, t, c, cnt; bool operator == (node u, node v) { for(int i = 1;i <= 3;i++) if(u.a[i] != v.a[i]) return false; return true; } int main() { scanf("%d %d %d", &n, &m, &q); for(int i = 1;i <= q;i++) { scanf("%d %d %d %d", &x, &y, &t, &c); if(p[x][y].a[t] == p[x][m - y + 1].a[t]) { (p[x][y].a[t] += c) %= MOD; cnt += (p[x][y].a[t] == p[x][m - y + 1].a[t]) ? 0 : 1; } else { (p[x][y].a[t] += c) %= MOD; cnt += (p[x][y].a[t] == p[x][m - y + 1].a[t]) ? -1 : 0; } (cnt == 0) ? printf("Yes\n") : printf("No\n"); } return 0; }
- 1
信息
- ID
- 8255
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者