JOI 2016 - Collecting Stamps 2

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, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1400 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Phố mua sắm JOI có \(N\) cửa hàng dọc theo một đại lộ một chiều, đánh số từ 1 đến \(N\) theo hướng từ lối vào tới lối ra. Mỗi cửa hàng đã chọn một con dấu J, O hoặc I.

Người tham gia cuộc sưu tập dấu vào đúng ba cửa hàng theo thứ tự trên phố. Nếu ba dấu trên thẻ lần lượt là J, O, I, họ nhận được phiếu quà tặng.

Một cửa hàng mới sẽ được mở tại một trong \(N+1\) vị trí: trước cửa hàng 1, giữa hai cửa hàng liên tiếp, hoặc sau cửa hàng \(N\). Cửa hàng mới cũng chọn một trong ba con dấu. Hãy chọn vị trí và con dấu để tối đa hóa số bộ ba cửa hàng mang lại phiếu quà tặng.

Dữ liệu vào

  • Dòng 1 chứa \(N\).
  • Dòng 2 chứa xâu \(S\) dài \(N\), chỉ gồm J, O, I; ký tự thứ \(i\) là dấu của cửa hàng \(i\).

Dữ liệu ra

In ra số bộ ba lớn nhất. Kết quả có thể vượt miền số nguyên có dấu 32 bit.

Ràng buộc

\[ 3\le N\le100000. \]

Phân nhóm

  • Nhóm 1 (30 điểm): \(N\le200\).
  • Nhóm 2 (20 điểm): \(N\le3000\).
  • Nhóm 3 (50 điểm): không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
5
JOIOI
Output
6
Giải thích

Nếu mở một cửa hàng dấu J giữa cửa hàng 1 và 2, dãy dấu là JJOIOI. Sáu bộ ba hợp lệ là \((1,3,4)\), \((1,3,6)\), \((1,5,6)\), \((2,3,4)\), \((2,3,6)\), \((2,5,6)\). Không thể đạt 7 bộ.

Ví dụ 2

Input
7
JJJOIII
Output
18

Ví dụ 3

Input
4
OIIJ
Output
2
Giải thích

Trong ví dụ 3, phương án tối ưu là mở một cửa hàng dấu J trước cửa hàng 1.

Nguồn

Kỳ thi chung kết Olympic Tin học Nhật Bản 2015/2016, bài 2.

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: