| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 430726 | 方相宜 | 26年1月-A组(萌新)C. 电路布局 | C++ | 通过 | 100 | 23 MS | 13132 KB | 1637 | 2026-02-27 19:46:29 |
#include <iostream> using namespace std; // 因为坐标最大是1000,所以数组开2005足够,偏移1000避免负数 const int MAX = 2005; bool has[MAX][MAX] = {false}; // 记录这个位置有没有元件 int cnt[MAX][MAX] = {0}; // 记录这个位置元件的邻居数 int total = 0; // 当前激活的元件总数 // 四个方向:上、下、左、右 int dx[4] = {-1, 1, 0, 0}; int dy[4] = {0, 0, -1, 1}; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); // 加速输入输出,应对大数据 int n; cin >> n; while (n--) { int x, y; cin >> x >> y; x += 1000; // 偏移,把坐标从0~1000映射到1000~2000 y += 1000; has[x][y] = true; // 放置新元件 // 遍历新元件的四个邻居 for (int i = 0; i < 4; ++i) { int nx = x + dx[i]; int ny = y + dy[i]; if (has[nx][ny]) { // 如果邻居位置已有元件 // 1. 更新邻居的状态:邻居数+1 if (cnt[nx][ny] == 3) total--; // 邻居之前是激活的,现在要失活 cnt[nx][ny]++; if (cnt[nx][ny] == 3) total++; // 邻居现在变成激活的了 // 2. 同时,新元件自己的邻居数也+1 cnt[x][y]++; } } // 检查新元件自己是否被激活 if (cnt[x][y] == 3) { total++; } // 每一步输出当前激活总数,严格符合题意 cout << total << '\n'; } return 0; }