TJUACM假期集训个人赛(七)(AtCoder abc254cd abc253bc)
发布人:shili8
发布时间:2024-12-22 22:14
阅读次数:0
**TJUACM假期集训个人赛(七)**
**AtCoder ABC254 CD, ABC253 BC**
**个人赛总结**
本次个人赛共有两道题目,分别是ABC254 CD和ABC253 BC。以下是我的个人赛总结:
### ABC254 CD#### 题目描述在一个 $n times n$ 的网格中,有一些细胞被染色为红色。每个细胞的颜色可以通过以下规则改变:如果一个细胞周围有两个或更多红细胞,则该细胞变为红色;否则,所有细胞都变为白色。
####任务给定一个 $n times n$ 的网格,其中一些细胞已经被染色为红色。请找出最终颜色。
#### 思路和方法1. 首先,我们需要找到网格中红细胞的数量。
2. 然后,我们可以使用以下规则改变每个细胞的颜色:如果一个细胞周围有两个或更多红细胞,则该细胞变为红色;否则,所有细胞都变为白色。
####代码示例
cpp#include <iostream> using namespace std; const int N =1000; int n, m, k; bool a[N][N]; void solve() { cin >> n; for (int i =0; i < n; ++i) { for (int j =0; j < n; ++j) { char c; cin >> c; if (c == 'R') a[i][j] = true; } } int cnt =0; for (int i =0; i < n; ++i) { for (int j =0; j < n; ++j) { if (a[i][j]) cnt++; } } bool ans = false; for (int i =0; i < n; ++i) { for (int j =0; j < n; ++j) { int sum =0; for (int x = max(0, i -1); x <= min(n -1, i +1); ++x) { for (int y = max(0, j -1); y <= min(n -1, j +1); ++y) { if (a[x][y]) sum++; } } if (sum >=2 && !a[i][j]) ans = true; } } cout << (ans ? "R" : "W") << endl; }
### ABC253 BC#### 题目描述给定一个 $n times n$ 的网格,其中一些细胞已经被染色为红色。每个细胞的颜色可以通过以下规则改变:如果一个细胞周围有两个或更多红细胞,则该细胞变为红色;否则,所有细胞都变为白色。
####任务给定一个 $n times n$ 的网格,其中一些细胞已经被染色为红色。请找出最终颜色。
#### 思路和方法1. 首先,我们需要找到网格中红细胞的数量。
2. 然后,我们可以使用以下规则改变每个细胞的颜色:如果一个细胞周围有两个或更多红细胞,则该细胞变为红色;否则,所有细胞都变为白色。
####代码示例
cpp#include <iostream> using namespace std; const int N =1000; int n, m, k; bool a[N][N]; void solve() { cin >> n; for (int i =0; i < n; ++i) { for (int j =0; j < n; ++j) { char c; cin >> c; if (c == 'R') a[i][j] = true; } } int cnt =0; for (int i =0; i < n; ++i) { for (int j =0; j < n; ++j) { if (a[i][j]) cnt++; } } bool ans = false; for (int i =0; i < n; ++i) { for (int j =0; j < n; ++j) { int sum =0; for (int x = max(0, i -1); x <= min(n -1, i +1); ++x) { for (int y = max(0, j -1); y <= min(n -1, j +1); ++y) { if (a[x][y]) sum++; } } if (sum >=2 && !a[i][j]) ans = true; } } cout << (ans ? "R" : "W") << endl; }
以上是我的个人赛总结和代码示例。希望这些信息对你有所帮助!