Điều hướng chính

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.

root

Robot giao hàng

100 điểm

Pick-E là một robot giao hàng thông minh được phát triển bởi công ty FutureTech. Nó được lập trình để thu thập các gói hàng đặc biệt được đặt rải rác trên một tuyến đường thẳng, tuyến đường này được chia theo mét và được đánh số liên tiếp từ \(0\) trở đi.

Ban đầu, Pick-E đứng tại vị trí \(0\). Trên tuyến đường có \(N\) gói hàng cần thu thập. Gói hàng thứ \(i\) được đặt tại vị trí \(P_i\) và có nhãn màu \(A_i\), cho biết loại mặt hàng trong đó.

Để thu thập một gói hàng, Pick-E cần được trang bị đúng loại bộ kẹp tương ứng với nhãn màu của gói đó. Pick-E chỉ có thể thay đổi bộ kẹp khi nó đang đứng tại điểm \(0\). Tại một thời điểm Pick-E chỉ có thể nhặt một gói hàng nếu nó đứng đúng tại vị trí của gói đó và đang trang bị đúng loại bộ kẹp phù hợp với màu.

Công ty yêu cầu Pick-E phải thu thập đúng \(K\) gói hàng. Mỗi mét Pick-E di chuyển (sang trái hoặc phải) tốn đúng \(1\) giây, và việc nhặt hàng cũng như thay bộ kẹp đều không mất thời gian.

Yêu cầu: Hãy tính thời gian ít nhất để Pick-E có thể thu thập \(K\) gói hàng. Lưu ý Pick-E không cần phải quay trở lại vị trí ban đầu.

Input

Dòng đầu tiên ghi duy nhất một số nguyên \(T \leq 5\) là số lượng test.

Mỗi test gồm:

  • Dòng một chứa hai số nguyên dương \(N\) và \(K\) (\(K \leq N \leq 1000\)).
  • Dòng thứ hai chứa \(N\) số nguyên dương, số thứ \(i\) là \(P_i\) (\(P_i \leq 10^5\)).
  • Dòng thứ ba chứa \(N\) số nguyên dương, số thứ \(i\) là \(A_i\) (\(A_i \leq 1000\)).

Output

Với mỗi test, in ra thời gian ít nhất mà Pick-E cần để thu thập đủ \(K\) gói hàng.

Example

Test 1

Input
1
4 3
1 2 3 4
1 8 1 8
Output
6

Scoring

  • Subtask 1 (15 điểm): \(N \le 10\).
  • Subtask 2 (25 điểm): \(N \le 50\).
  • Subtask 3 (60 điểm): \(N \leq 1000\).

root

Đếm xâu con

100 điểm

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\).

root

Mua hàng

100 điểm

Nam có \(N\) đồng tiền được đánh số từ \(1\) đến \(N\), đồng tiền thứ \(i\) có mệnh giá là \(T_i\) (\(1 \le i \le N\)).

Siêu thị có \(M\) mặt hàng được đánh số từ \(1\) đến \(M\), mặt hàng thứ \(j\) được bán với giá là \(P_j\) (\(1 \le j \le M\)).

Yêu cầu: Hãy xác định với mỗi mặt hàng trong siêu thị Nam có thể sử dụng các đồng tiền hiện có của mình để mua được hay không với điều kiện là trả đúng giá và không lấy lại tiền thối.

Input

  • Dòng đầu ghi số nguyên dương \(N\) và \(M\);
  • Dòng thứ hai ghi \(N\) số nguyên dương \(T_1,T_2,...,T_N\);
  • Dòng thứ ba ghi \(M\) số nguyên dương \(P_1,P_2,...,P_M\);
  • Các số có giá trị không quá \(10^6\) và được ghi cách nhau ít nhất một dấu cách.

Output

  • Gồm \(M\) dòng ghi kết quả tương ứng của từng mặt hàng: YES nếu có
    thể mua được, ngược lại ghi NO.

Example

Test 1

Input
3 4
1 2 6
1 2 3 5
Output
YES
YES
YES
NO

Scoring

  • Có \(50\%\) số điểm \(N \le 15\) và \(M \le 100\);
  • Có \(50\%\) số điểm \(15 < N \le 20\) và \(M \le 100 000\).

root

Số lượng bội

100 điểm

Cho hai số nguyên dương \(N\) và \(M\) (\(N, M \le 10^{18}\)).

Yêu cầu: Hãy viết chương trình tìm số lượng bội của \(N\) thỏa mãn sao cho bội của \(N\) không vượt quá giá trị của \(M\).

Input

Dữ liệu vào: Từ tệp BOI.INP có cấu trúc:

  • Dòng đầu ghi số nguyên dương \(K\) (\(K \le 100\)) là số lượng bộ dữ liệu.
  • Tiếp theo là \(K\) dòng, mỗi dòng chứa hai số nguyên dương \(N\) và \(M\) cách nhau một dấu cách.

Output

Dữ liệu ra: Ghi ra tệp BOI.OUT gồm \(K\) dòng, mỗi dòng tương ứng với kết quả cho bộ dữ liệu tương ứng: số lượng bội của \(N\) không vượt quá \(M\).

Example

Test 1

Input
2
2 7
5 10
Output
3
2

Scoring

  • Có \(60\%\) số test ứng với \(60\%\) số điểm của bài với \(N,M \le 10^{5}\) và \(K=1\).
  • Có \(20\%\) số test ứng với \(20\%\) số điểm của bài với \(N,M \le 10^{9}\).
  • Có \(20\%\) số test ứng với \(20\%\) số điểm của bài với \(N,M \le 10^{18}\).
Xem thêm