当前位置:实例文章 » JAVA Web实例» [文章]TJUACM假期集训个人赛(七)(AtCoder abc254cd abc253bc)

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;
}


以上是我的个人赛总结和代码示例。希望这些信息对你有所帮助!

相关标签:算法java开发语言
其他信息

其他资源

Top