JOI 2015 - AAQQZ

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: 2600 (p) Thời gian: 4.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

IOI 2015 được tổ chức tại Kazakhstan. Từ "Kazakh" đôi khi được viết bằng bảng chữ cái là QAZAQ, và QAZAQ là một chuỗi đối xứng. Sau khi biết điều này, JOI-kun bắt đầu yêu thích các chuỗi đối xứng và muốn tạo một chuỗi như vậy từ một chuỗi mà cậu nhìn thấy.

Chuỗi JOI-kun tìm thấy có độ dài \(N\). Mỗi ký tự được biểu diễn bởi một số nguyên từ \(1\) đến \(C\), do đó chuỗi được biểu diễn bằng dãy

\[ S=(S_1,S_2,\ldots,S_N). \]

Với \(1 \le i \le j \le N\), dãy \((S_i,S_{i+1},\ldots,S_j)\) được gọi là đoạn \((i,j)\). Đoạn \((i,j)\) là đối xứng nếu nó bằng dãy đảo ngược của chính nó, tức là

\[ (S_i,S_{i+1},\ldots,S_j)=(S_j,S_{j-1},\ldots,S_i). \]

JOI-kun thực hiện các bước sau để tạo một đoạn đối xứng:

  1. Chọn một đoạn của \(S\), gọi đoạn đó là \(T\).
  2. Sắp xếp \(T\) theo thứ tự tăng dần, thu được \(T'\).
  3. Thay đoạn \(T\) trong \(S\) bằng \(T'\), thu được dãy \(S'\). Cụ thể, nếu chọn đoạn \((i,j)\) và dãy đã sắp xếp là \(T'_i \le T'_{i+1} \le \cdots \le T'_j\), thì
\[ S'=(S_1,\ldots,S_{i-1},T'_i,T'_{i+1},\ldots,T'_j,S_{j+1},\ldots,S_N). \]
  1. Tìm một đoạn đối xứng trong \(S'\).

JOI-kun muốn tạo được một đoạn đối xứng dài nhất có thể.

Yêu cầu

Cho dãy \(S\) biểu diễn chuỗi JOI-kun tìm thấy. Hãy tìm độ dài lớn nhất của một đoạn đối xứng có thể tạo được bằng thao tác trên.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên \(N,C\).
  • \(N\) dòng tiếp theo, dòng thứ \(i\) chứa số nguyên \(S_i\).

Dữ liệu ra

In ra một số nguyên là độ dài lớn nhất cần tìm.

Ràng buộc

  • \(1 \le N \le 3\,000\).
  • \(1 \le C \le 3\,000\).
  • \(1 \le S_i \le C\) với mọi \(1 \le i \le N\).

Phân nhóm

  • Nhóm 1 (10 điểm): \(N \le 50\), \(C \le 50\)
  • Nhóm 2 (90 điểm): Không có ràng buộc bổ sung

Ví dụ

Ví dụ 1

Input
12 26
26
17
17
17
1
26
1
17
19
20
1
14
Output
8
Giải thích

Ở ví dụ này,

\[ S=(26,17,17,17,1,26,1,17,19,20,1,14). \]
    Sắp xếp đoạn $(4,8)$ theo thứ tự tăng dần thu được
\[ S'=(26,17,17,1,1,17,17,26,19,20,1,14). \]
    Đoạn $(1,8)$ của $S'$ là đối xứng và có độ dài $8$. Không thể tạo đoạn đối xứng dài hơn.

Ví dụ 2

Input
4 3
1
2
3
2
Output
3
Giải thích

Ta có \(S=(1,2,3,2)\). Có thể chọn đoạn \((1,1)\); sau khi sắp xếp, dãy không đổi. Đoạn \((2,4)\) là đối xứng và có độ dài \(3\), là độ dài lớn nhất.

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: