Chọn đoạn

Xem PDF



Tác giả:
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: 2300 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn tham gia vào một cuộc thi và đã phải đấu \(n\) trận, mỗi trận đấu nếu thắng bạn nhận được \(1\) điểm, ngược lại nếu thua bạn sẽ mất đi \(-1\) điểm. Tuy nhiên, để đối mặt với sự dò hỏi của huấn luyện viên, bạn quyết định bịa ra rằng chỉ có một vài trận đấu là bạn thật sự nghiêm túc thi đấu. Cụ thể, bạn sẽ chọn ra không quá \(k\) đoạn \([l_1, r_1], [l_2, r_2], \dots, [l_x, r_x]\) (với \(0 \le x \le k\)) sao cho \(1 \le l_1 \le r_1 < l_2 \le r_2 < \dots < l_x \le r_x \le n\) và nói rằng bạn chỉ nghiêm túc trong những trận đấu có chỉ số thuộc một trong các đoạn trên. Mức độ hài lòng của huấn luyện viên phụ thuộc vào số điểm bạn nhận được trong các trận đấu mà bạn coi là nghiêm túc. Hãy tìm cách chọn ra tối đa \(k\) đoạn sao cho tổng số điểm của bạn là lớn nhất.

Input

  • Dòng đầu tiên chứa hai số nguyên \(n, k\) (\(1 \le k \le n \le 2\cdot 10^5\)), tương ứng là số trận đấu và số lượng đoạn tối đa bạn sẽ chọn.
  • Dòng thứ hai chứa một xâu ký tự gồm \(n\) ký tự, ký tự thứ \(i\) tương ứng là trạng thái thắng hay thua của bạn ở ván đấu thứ \(i\), là W nếu bạn thắng, và L nếu bạn thua.

Output

  • Ghi kết quả trên một dòng, là tổng số điểm lớn nhất bạn chọn được.

Example

Test 1

Input
4 1
WLWW
Output
2

Scoring

  • Subtask \(1\) (\(15\) điểm): \(k = 1\);
  • Subtask \(2\) (\(15\) điểm): \(k = 2\);
  • Subtask \(3\) (\(20\) điểm): \(n \le 100\);
  • Subtask \(4\) (\(20\) điểm): \(n \le 500\);
  • Subtask \(5\) (\(10\) điểm): \(n \le 2000\);
  • Subtask \(6\) (\(10\) điểm): \(n \le 10^4\);
  • Subtask \(7\) (\(10\) điểm): không có ràng buộc gì thêm.

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: