結果
| 問題 | No.3395 Range Flipping Game |
| コンテスト | |
| ユーザー |
EvbCFfp1XB
|
| 提出日時 | 2025-12-02 23:29:19 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 1,398 ms / 2,000 ms |
| コード長 | 5,999 bytes |
| コンパイル時間 | 2,930 ms |
| コンパイル使用メモリ | 82,236 KB |
| 実行使用メモリ | 65,824 KB |
| 最終ジャッジ日時 | 2025-12-02 23:29:38 |
| 合計ジャッジ時間 | 17,928 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 30 |
ソースコード
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (final Scanner in = new Scanner(System.in)) {
int t = in.nextInt();
for (int i = 0; i < t; i++) {
int n = in.nextInt();
String s = in.next();
if (n == 1) {
System.out.println("B");
} else if (n == 2) {
// -> AA -> BB
// -> AB -> BB
// -> BA -> BB
// -> BB -> BB
System.out.println("BB");
} else {
if (s.charAt(0) == 'A') {
if (s.charAt(1) == 'A') {
if (s.charAt(2) == 'A') {
// AA(A.*) -> ABAA -> BBAA
System.out.println("BB" + s.substring(2));
} else {
// AA(B+)(.*) -> ABAA -> BBAA
StringBuilder sb = new StringBuilder();
boolean change = false;
for (int j = 2; j < s.length(); j++) {
if (!change && s.charAt(j) == 'B') {
sb.append("A");
} else {
change = true;
sb.append(s.charAt(j));
}
}
System.out.println("BB" + sb.toString());
}
} else {
if (s.charAt(2) == 'A') {
// ABAA -> ABAA -> BBAA
// ABAB -> ABAA -> BBAA
StringBuilder sb = new StringBuilder();
int change = 0;
for (int j = 3; j < s.length(); j++) {
if (change == 0) {
if (s.charAt(j) == 'A') {
sb.append("A");
} else {
change = 1;
}
}
if (change == 1) {
if (s.charAt(j) == 'B') {
sb.append("A");
} else {
change = 2;
}
}
if (change == 2) {
sb.append(s.charAt(j));
}
}
System.out.println("BBA" + sb.toString());
} else {
// ABBA -> ABAA -> BBAA
// ABBB -> ABAA -> BBAA
StringBuilder sb = new StringBuilder();
int change = 1;
for (int j = 2; j < s.length(); j++) {
if (change == 1) {
if (s.charAt(j) == 'B') {
sb.append("A");
} else {
change = 2;
}
}
if (change == 2) {
sb.append(s.charAt(j));
}
}
System.out.println("BB" + sb.toString());
}
}
} else {
if (s.charAt(1) == 'A') {
if (s.charAt(2) == 'A') {
// BAAA -> ABAA -> BBAA
// BAAB -> ABAB -> BBAB
System.out.println("BB" + s.substring(2));
} else {
// BABA -> ABAA -> BBAA
// BABB -> ABAA -> BBAA
StringBuilder sb = new StringBuilder();
int change = 1;
for (int j = 2; j < s.length(); j++) {
if (change == 1) {
if (s.charAt(j) == 'B') {
sb.append("A");
} else {
change = 2;
}
}
if (change == 2) {
sb.append(s.charAt(j));
}
}
System.out.println("BB" + sb.toString());
}
} else {
if (s.charAt(2) == 'A') {
// BBAA -> ABAA -> BBAA
// BBAB -> ABAB -> BBAB
System.out.println(s);
} else {
// BBBA -> ABBA -> BBBA
// BBBB -> BBBB -> BBBB
System.out.println(s);
}
}
}
}
}
}
}
}
EvbCFfp1XB