JOI 2026 - JOI Eliminator

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1200 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho chuỗi \(S\) độ dài \(N\) chỉ gồm các ký tự J, O, I. JOI-kun lặp lại thao tác sau cho đến khi không thể thực hiện: chọn một đoạn liên tiếp JOI và thay bằng OIJ.

Có thể chứng minh thao tác luôn kết thúc và chuỗi cuối cùng không phụ thuộc vào thứ tự chọn đoạn. Hãy in chuỗi cuối cùng.

Dữ liệu vào

Dòng đầu chứa \(N\). Dòng thứ hai chứa chuỗi \(S\).

Dữ liệu ra

In chuỗi sau khi không còn thao tác nào thực hiện được.

Ràng buộc

  • \(3 \le N \le 500000\).
  • \(S\) chỉ gồm J, O, I và có độ dài \(N\).
  • Mọi giá trị số trong dữ liệu vào đều là số nguyên.

Phân nhóm

  1. \(14\) điểm: \(N \le 100\).
  2. \(27\) điểm: \(N\) chia hết cho \(3\)\(S\)JOI lặp lại \(N/3\) lần.
  3. \(29\) điểm: tồn tại \(2 \le k \le N\) sao cho \(k\) ký tự đầu là J và phần còn lại không chứa J.
  4. \(30\) điểm: không có ràng buộc thêm.

Ví dụ

Ví dụ 1

Input
6
JOIJOI
Output
OIOIJJ
Giải thích

Một cách thực hiện là:

  1. Ban đầu, \(S=\) JOIJOI.
  2. Thao tác trên các vị trí \(1\) đến \(3\), thu được OIJJOI.
  3. Thao tác trên các vị trí \(4\) đến \(6\), thu được OIJOIJ.
  4. Thao tác trên các vị trí \(3\) đến \(5\), thu được OIOIJJ.

Không thể tiếp tục thao tác, nên in OIOIJJ.

Ví dụ này thỏa mãn các nhóm \(1\), \(2\), \(4\).

Ví dụ 2

Input
8
JJJOIOIO
Output
OIOIJJJO
Giải thích

Ví dụ này thỏa mãn các nhóm \(1\), \(3\), \(4\).

Ví dụ 3

Input
20
JJOIJOIJOOIJOIIJJOIO
Output
OIOIJJJJOOIOIJIOIJJO
Giải thích

Ví dụ này thỏa mãn các nhóm \(1\), \(4\).

Nguồn

JOI 2025/2026 - Vòng loại 2, bài JOI Eliminator.

Tài liệu gốc của Japanese Committee for IOI được phát hành theo giấy phép CC BY-SA 4.0.

Tệp

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: