| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Dãy con tăng có trọng số | 100 (p) | 1.0s | 256M |
| 2 | Eo Xê Ếch | 100 (p) | 1.0s | 256M |
| 3 | Palindrome | 100 (p) | 1.0s | 256M |
| 4 | Số lượng dãy con có tổng bằng S | 100 (p) | 1.0s | 256M |
| 5 | Cái túi 1 | 100 (p) | 1.0s | 256M |
| 6 | Đường đi trên lưới | 100 (p) | 1.0s | 256M |
| 7 | Hội trường | 100 (p) | 1.0s | 256M |
Cho dãy số nguyên \(A\) gồm \(n\) phần tử \(A_1, A_2, \dots, A_n\).
Một dãy con tăng ngặt của \(A\) là dãy được tạo ra bằng cách chọn ra một hoặc nhiều phần tử từ dãy ban đầu (giữ nguyên thứ tự xuất hiện) sao cho phần tử đứng sau luôn lớn hơn phần tử đứng trước nó.
Hãy tìm một dãy con tăng ngặt của dãy \(A\) sao cho tổng các phần tử được chọn đạt giá trị lớn nhất có thể.
Test 1
5
1 101 2 3 100
106
Dãy con tăng ngặt tối ưu được chọn là:
\(1 \rightarrow 2 \rightarrow 3 \rightarrow 100\)
Tổng lớn nhất = \(1 + 2 + 3 + 100 = 106\).
(Lưu ý: Dãy con \(1 \rightarrow 101\) cũng là dãy tăng ngặt nhưng chỉ có tổng là \(102\), không phải là lớn nhất).
Cho hai xâu ký tự \(S\) và \(T\). Hãy tìm độ dài của xâu con chung dài nhất (Longest Common Subsequence - LCS) của hai xâu này.
(Lưu ý: Xâu con của một xâu được tạo ra bằng cách xóa đi một vài ký tự (hoặc không xóa ký tự nào) từ xâu ban đầu mà không làm thay đổi thứ tự của các ký tự còn lại. Xâu con chung không bắt buộc phải gồm các ký tự liên tiếp nhau).
Test 1
ABCBDAB
BDCABA
4
Một trong những xâu con chung dài nhất của \(S\) và \(T\) là BCBA (có độ dài là \(4\)).
Cho một xâu ký tự \(S\). Hãy tìm độ dài của xâu con liên tiếp đối xứng dài nhất (Longest Palindromic Substring) của xâu \(S\).
(Lưu ý: Xâu con liên tiếp là một chuỗi các ký tự nằm liền kề nhau trong xâu ban đầu. Xâu đối xứng là xâu đọc từ trái sang phải hay từ phải sang trái đều giống hệt nhau).
Test 1
babad
3
Một xâu con đối xứng dài nhất có thể là bab hoặc aba (đều có độ dài là \(3\)).
Cho dãy số nguyên \(A\) gồm \(n\) phần tử và một số nguyên \(S\). Hãy đếm số lượng dãy con (subsequence) của \(A\) sao cho tổng các phần tử trong dãy con đó bằng đúng \(S\).
(Lưu ý: Dãy con được tạo ra bằng cách chọn ra một số phần tử từ dãy ban đầu mà không cần liên tiếp (giữ nguyên thứ tự vị trí). Các cách chọn tập hợp vị trí khác nhau sẽ tính là các dãy con khác nhau).
Test 1
4 5
1 2 3 2
3
Các dãy con có tổng bằng \(5\) là:
Cho \(n\) đồ vật, mỗi vật có trọng lượng là \(w_i\) và giá trị là \(v_i\). Một chiếc túi có sức chứa tối đa là \(W\). Mỗi đồ vật chỉ được chọn tối đa một lần. Hãy chọn các đồ vật đưa vào túi sao cho tổng trọng lượng không vượt quá \(W\) và tổng giá trị thu được là lớn nhất.
Test 1
3 8
3 30
4 50
5 60
90
Phương án tối ưu là chọn vật thứ nhất (\(w=3, v=30\)) và vật thứ ba (\(w=5, v=60\)):
Khu rừng là một bảng \(n \times n\). Từ ô \((i, j)\), Nam có thể đi đến ô \((i + 1, j)\) hoặc \((i, j + 1)\).
Ô \((i, j)\) có \(A_{i, j}\) cây nấm. Hành trình của Nam bắt đầu từ \((1, 1)\) và kết thúc tại \((n, n)\), số nấm tối đa cô ấy có thể thu thập được là bao nhiêu?
Test 1
4
2 2 2 1
1 1 2 1
1 1 2 1
1 1 2 2
14
Phương án tối ưu là đi theo đường: \((1,1) \to (1,2) \to (2,2) \to (2,3) \to (3,3)\).
Bạn đang quản lí một hội trường. Có \(n\) lượt đăng kí sử dụng hội trường, lượt thứ \(i\) là \([l_i, r_i]\), đăng kí sử dụng hội trường trong khoảng thời gian từ \(l_i\) đến \(r_i\), tổng thời gian sử dụng là \(r_i - l_i + 1\).
Tại một thời điểm, chỉ được tiếp nhận nhiều nhất một lượt đăng kí. Ví dụ hai lượt đăng kí \([3, 5]\) và \([5, 7]\) không thể thực hiện được cùng một lúc do trùng thời điểm \(5\). Nhiệm vụ của bạn là chọn ra một số lượt đăng kí sao cho không tồn tại hai lượt đăng kí có thời gian giao nhau và tổng thời gian sử dụng hội trường là lớn nhất.
Test 1
4
1 3
2 5
4 6
6 8
7
Giải thích: Chọn hai lượt đăng kí \([2, 5]\) và \([6, 8]\).