Điều hướng chính

Nhắn tin NQ Coding

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

Dễ

Đếm xâu con

100 điểm 0% AC 0 đã giải

root

Cho một xâu kí tự \(s\) chứa các kí tự "a", "b", "c", và "?".

Gọi số lượng kí tự "?" trong xâu \(s\) là \(k\). Mỗi dấu "?" trong xâu ta có thể thay thế bằng \(1\) trong \(3\) kí tự "a", "b", "c". Như vậy, có thể tạo ra \(3^k\) xâu chỉ chứa các kí tự "a", "b", "c". Ví dụ, xâu \(s\) = "ac?b?c" ta có thể tạo ra được \(9\) xâu ["acabac", "acabbc", "acabcc", "acbbac", "acbbbc", "acbbcc", "accbac", "accbbc", "accbcc"].

Yêu cầu: Đếm tất cả các xâu con "abc" xuất hiện trong tất cả các xâu có thể tạo ra. In ra kết quả theo modulo \(10^9 + 7\).

Nhắc lại: Xâu con là xâu có thể thu được bằng cách xóa các kí tự ở một số các vị trí trong xâu. Xâu con của xâu "abc" là: ["", "a", "b", "c", "ab", "ac", "bc", "abc"].

Input

Dòng đầu tiên là số nguyên dương \(n\) - độ dài xâu \(s\).

Dòng thứ hai là xâu \(s\) chỉ chứa các kí tự "a", "b", "c", "?".

Output

Kết quả bài toán.

Example

Test 1

Input
6
ac?b?c
Output
24
Note

Trong ví dụ đầu tiên, ta có thể tạo ra 9 xâu:

"acabac" --- có 2 xâu con "abc",

"acabbc" --- có 4 xâu con "abc",

"acabcc" --- có 4 xâu con "abc",

"acbbac" --- có 2 xâu con "abc",

"acbbbc" --- có 3 xâu con "abc",

"acbbcc" --- có 4 xâu con "abc",

"accbac" --- có 1 xâu con "abc",

"accbbc" --- có 2 xâu con "abc",

"accbcc" --- có 2 xâu con "abc".

Vậy, có tất cả 2+4+4+2+3+4+1+2+2=24 xâu con "abc".

Scoring

\(20\%\) số test có \(n \leq 10\).

\(20\%\) số test có \(n \leq 50\).

\(20\%\) số test có \(n \leq 1000\).

\(20\%\) số test đảm bảo xâu \(s\) không có kí tự "?" nào.

\(20\%\) số test cos \(n \leq 200000\).

Dễ

Chia kẹo của thầy Phú

100 điểm 50% AC 1 đã giải

staffagent

Thầy Phú xếp \(N\) học sinh thành một hàng để phát kẹo. Bạn đầu hàng nhận \(1\) viên, các bạn tiếp theo lần lượt nhận nhiều hơn bạn ngay trước đúng \(3\) viên (dãy \(1, 4, 7, 10, \dots\)). Thầy phát lần lượt từ đầu hàng và chỉ phát khi số kẹo còn lại đủ cho bạn đó theo đúng quy tắc; ngay khi không đủ, thầy dừng lại (không phát thêm cho ai nữa, số kẹo dư thầy đem về).

Thầy chỉ có \(K\) viên kẹo. Hãy tính số học sinh nhận được kẹo.

Input

  • Một dòng gồm hai số nguyên dương \(N\) và \(K\).

Output

  • In ra một số nguyên là số học sinh nhận được kẹo.

Constraints

  • \(1 \le N \le 10^{5}\).
  • \(1 \le K \le 10^{15}\).

Sample Input 1

5 30

Sample Output 1

4

Sample Input 2

4 100

Sample Output 2

4

Explanation

Ở ví dụ 1, bốn bạn đầu cần \(1+4+7+10 = 22 \le 30\) viên, bạn thứ năm cần thêm \(13\) viên nên \(35 > 30\): dừng lại. Ở ví dụ 2, kẹo còn dư nhưng lớp chỉ có \(4\) bạn.

Dễ

Sửa đèn đường

100 điểm 50% AC 1 đã giải

staffagent

Con đường đi qua thành phố có \(N\) cột đèn, các cột được đánh số từ \(1\) đến \(N\). Sau trận bão có \(M\) bóng đèn bị hỏng.

Để gấp rút trang hoàng cho đêm hội, ban tổ chức muốn có một đoạn gồm \(K\) cột đèn liên tiếp mà bóng đèn đều không bị hỏng. Vì vậy các chú thợ điện muốn sửa một số ít nhất các bóng đèn để đáp ứng yêu cầu của ban tổ chức.

Yêu cầu: Tính số bóng đèn ít nhất cần sửa.

Input

  • Dòng đầu ghi ba số nguyên dương \(N, K, M\) (\(1 \le K, M \le N \le 200000\)).
  • Trong \(M\) dòng tiếp theo, mỗi dòng ghi một số nguyên là chỉ số của một bóng đèn bị hỏng (các chỉ số đôi một khác nhau).

Output

Gồm một số duy nhất là số lượng ít nhất các bóng đèn cần sửa.

Scoring

  • Có \(50\%\) số điểm với \(1 \le N \le 2000\).
  • Có \(50\%\) số điểm với \(2000 < N \le 200000\).

Sample Input 1

10 6 5
2
10
1
5
9

Sample Output 1

1
Dễ

Nhập môn chia căn

100 điểm 100% AC 1 đã giải

staffagent

Cho một mảng \(a\) gồm \(n\) số nguyên \(a_1, a_2, \ldots, a_n\).

Bạn cần xử lý \(q\) truy vấn trên mảng ban đầu, mỗi truy vấn có thể là một trong hai loại:

  • 1 x y — Gán \(a_x := y\).
  • 2 l r — In ra giá trị lớn nhất trong đoạn từ \(a_l\) đến \(a_r\).

Chỉ sử dụng chia căn để giải bài này.

Input

  • Dòng đầu tiên chứa hai số nguyên \(n\) và \(q\) (\(1 \le n, q \le 10^5\)).
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) (\(|a_i| \le 10^9\)).
  • \(q\) dòng tiếp theo, mỗi dòng là một truy vấn theo định dạng mô tả ở trên (\(1 \le x \le n\), \(|y| \le 10^9\), \(1 \le l \le r \le n\)).

Output

Với mỗi truy vấn loại \(2\), in ra một dòng là giá trị lớn nhất trong đoạn được yêu cầu.

Scoring

  • Subtask 1 (\(20\%\)): \(n, q \le 1000\).
  • Subtask 2 (\(80\%\)): Không có ràng buộc thêm.

Sample Input 1

5 4
1 3 -2 4 5
2 2 5
1 3 7
2 2 5
2 1 3

Sample Output 1

5
7
7
Xem thêm