Đ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.

Dễ

Bài 2. Mảnh ghép (LEGO)

100 điểm 25% AC 7 đã giải

root

Mark là CEO của tập đoàn Space X, sau khi ông tổ chức cho nhân viên của tập đoàn đi du hành vũ trụ về, ông thực hiện dự án mới đó là nghiên cứu một loại mảnh ghép mới để lắp ghép ra các thiết bị không gian có độ dài tùy ý. Loại mảnh ghép này dùng một loại vật liệu mới rất cứng nên không thể cắt hàn như các vật liệu thông thường, nó dùng các ngàm âm dương để liên kết với nhau. Để thuận tiện cho việc lắp ghép các thiết bị, tập đoàn đã sản xuất sẵn \(n\) mảnh ghép, mỗi mảnh ghép có chiều dài nhất định; người ta căn cứ vào chiều dài thiết bị của mình để lấy số lượng các mảnh ghép phù hợp. Chiều dài của thiết bị sau lắp ghép chính là tổng chiều dài của các mảnh ghép được sử dụng.

Một thiết bị có chiều dài \(d\) được gọi là lắp ghép được nếu tồn tại cách chọn các mảnh ghép của từng loại sao cho tổng chiều dài đúng bằng \(d\).

Các thiết bị này sẽ được sử dụng trên các trạm không gian, mỗi trạm có một giới hạn chiều dài \(T\) nhất định. Để đánh giá sự linh hoạt về chiều dài của các mảnh ghép này, người ta tiến hành xem xét có thể lắp ghép được những thiết bị có độ dài bao nhiêu trong khoảng giới hạn của trạm (tức là giới hạn trong đoạn \([0,T]\)).

Hãy giúp Mark thống kê số lượng các chiều dài \(d\) của thiết bị có thể lắp ghép được \((0 \le d \le T)\).

Input

Cho trong file LEGO.INP, có cấu trúc:

  • Dòng 1: Chứa hai số nguyên dương \(n\) và \(T\) \((1 \le n \le 2000,\ 0 \le T \le 10^{18})\).
  • Dòng 2: Chứa \(n\) số nguyên dương \(a_1,a_2,\ldots,a_n\) là chiều dài của từng mảnh ghép \((1 \le a_i \le 2000)\).

Các số trên cùng một dòng được ghi cách nhau bởi ít nhất một dấu cách.

Output

Ghi ra file LEGO.OUT:

  • Dòng 1: Ghi một số nguyên duy nhất là kết quả của bài toán.

Example

Test 1

Input
2 7
2 5
Output
6
Note

Các chiều dài thiết bị có thể lắp ghép được là: \(0,2,4,5,6,7\).

Scoring

  • 40% số test tương ứng với 40% số điểm có \(T \le 2\times10^3\).
  • 20% số test tương ứng với 20% số điểm có \(T \le 2\times10^4\).
  • 20% số test tương ứng với 20% số điểm có \(T \le 2\times10^5\).
  • 20% số test còn lại có \(T \le 10^{18}\).
Dễ

Bài 1. Chia nhóm (GROUP)

100 điểm 23% AC 12 đã giải

root

Mark là CEO của tập đoàn Space X, ông được phân công làm công tác tổ chức cho toàn bộ nhân viên của tập đoàn đi tham quan các trạm không gian. Tập đoàn có \(n\) nhân viên, nhân viên thứ \(i\) có mã số nhân viên là \(a_i\).

Mark sẽ chia nhân viên của tập đoàn thành 2 nhóm, nhóm A và nhóm B, mỗi nhóm cần ít nhất một nhân viên. Để tạo sự gắn kết giữa các thành viên, mỗi nhóm sẽ chọn một mã màu để đại diện cho nhóm mình, mã màu có giá trị trong khoảng từ \(1\) tới \(10^9\) sao cho mã màu được chọn sẽ nhỏ hơn hoặc bằng mã số nhỏ nhất của các thành viên trong nhóm. Hai cách chia được gọi là khác nhau nếu một nhân viên thuộc một nhóm khác hoặc có một mã màu khác trong hai cách chia.

Hãy giúp Mark đếm số cách chia nhóm khác nhau cho kế hoạch của mình. Vì số cách chia có thể rất lớn, kết quả được ghi ra sau khi lấy modulo cho \((10^9+7)\).

Input

Cho trong file GROUP.INP, có cấu trúc:

  • Dòng 1: Chứa số nguyên dương \(n\), là số nhân viên của tập đoàn \((2 \le n \le 10^5)\).
  • Dòng 2: Chứa \(n\) số nguyên dương \(a_1,a_2,\ldots,a_n\), là mã số của các nhân viên \((1 \le a_i \le 10^9)\).

Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.

Output

Ghi ra file GROUP.OUT:

  • Dòng 1: Ghi một số nguyên duy nhất là kết quả của bài toán.

Example

Test 1

Input

sample 2 1 2

Output

sample 4

Note

Với \(n=2\), \(a_1=1\) và \(a_2=2\):

    - Trường hợp 1: Nhóm A gồm $a_1=1$ (min=1) nên có 1 cách chọn mã màu; nhóm B gồm $a_2=2$ (min=2) nên có 2 cách chọn mã màu. Ta được $1 \times 2 = 2$ cách chia.
    - Trường hợp 2: Nhóm A gồm $a_2=2$ (min=2) có 2 cách chọn mã màu; nhóm B gồm $a_1=1$ (min=1) có 1 cách chọn mã màu. Ta được $2 \times 1 = 2$ cách chia.

    Tổng lại có 4 cách chia.

Test 2

Input

sample 2 2 3

Output

sample 12

Note

Với \(n=2\), \(a_1=2\) và \(a_2=3\):

    - Trường hợp 1: Nhóm A gồm $a_1=2$ (min=2) có 2 cách chọn màu; nhóm B gồm $a_2=3$ (min=3) có 3 cách chọn màu. Ta được $2 \times 3 = 6$ cách.
    - Trường hợp 2: Đổi vai trò nhóm A và B, ta được thêm 6 cách nữa.

    Tổng lại có 12 cách chia.

Test 3

Input

sample 3 1 2 3

Output

sample 14

Note

Với \(n=3\), \(a_1=1, a_2=2, a_3=3\). Các cách chia thành 2 nhóm tập hợp là:

    - $\{1\}$ và $\{2, 3\}$: Nhóm thứ nhất có min=1 (1 màu), nhóm thứ hai có min=2 (2 màu). Có $1 \times 2 = 2$ cách chọn màu. Hoán đổi A và B ta có $2 \times 2 = 4$ cách.
    - $\{1, 3\}$ và $\{2\}$: Nhóm thứ nhất có min=1 (1 màu), nhóm thứ hai có min=2 (2 màu). Tương tự có 4 cách.
    - $\{1, 2\}$ và $\{3\}$: Nhóm thứ nhất có min=1 (1 màu), nhóm thứ hai có min=3 (3 màu). Có $1 \times 3 = 3$ cách. Hoán đổi A và B ta có $3 \times 2 = 6$ cách.

    Tổng số cách chia: $4 + 4 + 6 = 14$ cách.

Scoring

  • 40% số test tương ứng với 40% số điểm có \(n \le 20\).
  • 40% số test tương ứng với 40% số điểm có \(n \le 30\) và \(a_i \le n\) với mọi \(i\).
  • 20% số test tương ứng với 20% số điểm còn lại không có ràng buộc gì thêm.
Dễ

Xâu con

100 điểm 42% AC 10 đã giải

root

Cho một xâu và một từ khóa, nhiệm vụ của bạn là đếm số lượng vị trí mà từ khóa xuất hiện trong xâu.

Input

  • Dòng đầu vào đầu tiên có một xâu độ dài \(n\) và dòng đầu vào thứ hai có một từ khóa độ dài \(m\). Cả hai đều bao gồm các ký tự a - z.
  • \(1 \leq n, m \leq 10^6\)

Output

  • In một số nguyên: số lần xuất hiện.

Example

Test 1

Input
saippuakauppias
pp
Output
2
Dễ

Sắp xếp xâu con

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

root

Cho ba xâu \(A, B, C\), thực hiện \(q\) truy vấn trên ba xâu này như sau:

  • Mỗi truy vấn gồm hai số \(l, r\)
  • Gọi \(x = A_{l},A_{l+1}...A_{r}\) ; \(y = B_{l}B_{l+1}...B_{r}\); \(z = C_{l}C_{l+1}...C_{r}\)
  • Sắp xếp ba xâu \(x, y, z\) thành \(x′,y′,z′\)
  • Gán lại các kí tự của xâu \(A\) từ \(l\) đến \(r\) thành \(x′\) , gán các kí tự của xâu \(B\) từ \(l\) đến \(r\) thành \(y′\) , gán các kí tự của xâu \(C\) từ \(l\) đến \(r\) thành \(z′\).

Hãy đưa ra ba xâu \(A, B, C\) sau khi thực hiện xong \(q\) truy vấn.

Input

Dòng đầu chứa số \(n, q\) \((1 \leq n,q \leq 10^5)\)

Ba dòng tiếp theo chứa ba xâu \(A,B,C\) có cùng độ dài chỉ chứa các kí tự thường.

\(q\) dòng tiếp theo, mỗi dòng chứa hai số \(l,r\) \((1 \leq l \leq r \leq n)\) mô tả các truy vấn.

Output

Đưa ra ba xâu trên ba dòng sau khi thực hiện xong các truy vấn.

Example

Test 1

Input
6 6
aabbcc
bcacab
cbcaba
1 1
2 2
3 3
4 4
5 5
6 6
Output
aaaaaa
bbbbbb
cccccc

Test 2

Input
3 1
aba
aab
aac
1 3
Output
aab
aac
aba

Scoring

\(30\%\) số điểm có \(n, q \leq 10^3\).

\(30\%\) số điểm có \(n, q \leq 10^4\).

\(40\%\) số điểm không có ràng buộc gì thêm.

Xem thêm