| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Nốt nhạc | 25 (p) | 1.0s | 1G |
| 2 | Thay đổi dãy số | 25 (p) | 1.0s | 128M |
| 3 | Đếm cặp | 25 (p) | 1.0s | 512M |
| 4 | Thích kẹo ngọt | 25 (p) | 1.0s | 512M |
Trong lúc dọn dẹp lại nhà kho, Miku đã tìm thấy một chiếc piano đồ chơi gắn liền với tuổi thơ của mình, có hình dạng như sau (ở trên: nốt nhạc, ở dưới: thứ tự phím đàn):
Là một người yêu âm nhạc, Miku muốn chơi thử một giai điệu yêu thích. Cụ thể hơn, giai điệu này có thể biểu diễn bằng một xâu \(s\) gồm \(n\) kí tự, với kí tự thứ \(i\) là nốt thứ \(i\). Tuy nhiên, Miku đã quên hoàn toàn cách chơi đàn này, không biết cần phải ấn phím thế nào để ra được đoạn giai điệu \(s\). Là một lập trình viên, bạn hãy giúp Miku nhé!
Xác định các phím cần bấm theo thứ tự, để tạo nên giai điệu cho trước.
Test 1
14
DEFDAAGDEFDGGF
2 3 4 2 6 6 5 2 3 4 2 5 5 4
Test 2
11
DEFDFGECCGF
2 3 4 2 4 5 3 1 1 5 4
Trong thư viện STL của ngôn ngữ C++, Double-ended queue (hay còn gọi là Deque) là một cấu trúc dữ liệu rất phổ biến và được sử dụng rộng rãi. Cụ thể hơn, nó là một kiểu dữ liệu tổng quát hoá của một hàng đợi, cho phép ta thực hiện thao tác thêm vào hoặc loại bỏ một phần tử ở cả hai đầu danh sách (ở cả vị trí đầu tiên và cuối cùng, trong khi đó, với hàng đợi thông thường ta chỉ có thể thêm phần tử vào cuối, và lấy ra phần tử ở đầu).
Miku đang có một Deque \(a\) gồm \(n\) phần tử, trong đó phần tử thứ \(i\) có giá trị là \(a_i\). Cô quyết định sẽ thực hiện thao tác sau chính xác \(m\) lần:
Sau khi thực hiện xong, Miku sẽ tính tổng giá trị của những phần tử còn lại trong \(a\). Phụ thuộc vào quá trình thực hiện thao tác, tổng sau cùng có thể khác nhau. Do đó, Miku thắc mắc rằng tổng này sẽ đạt giá trị lớn nhất là bao nhiêu.
Yêu cầu: Tìm tổng lớn nhất còn lại sau khi thực hiện \(m\) thao tác.
Test 1
8 3
5 2 6 4 7 1 8 3
26
Lần lượt loại bỏ như sau: Lần 1: phần tử đầu, lần 2: phần tử cuối và lần 3: phần tử đầu. Các giá trị bị loại là \(5, 3, 2\). Tổng các phần tử còn lại là \(6 + 4 + 7 + 1 + 8 = 26\), đạt giá trị lớn nhất.
Cho \(n\) điểm trên mặt phẳng tọa độ \(Oxy\). Lấy hai điểm bất kỳ trong số \(n\) điểm này (tạm gọi là \(A\) và \(B\)), ta cần biết liệu trung điểm của đoạn thẳng \(AB\) có phải là một điểm nguyên hay không. Nếu xét tất cả cặp điểm, có bao nhiêu trung điểm như thế?
Nhắc lại, điểm \((x, y)\) là điểm nguyên nếu cả hoành độ \(x\) và tung độ \(y\) đều là số nguyên.
Yêu cầu: Đếm trong \(n\) điểm cho trước, có bao nhiêu cặp tạo ra một đoạn thẳng có trung điểm là điểm nguyên.
Test 1
3
0 0
1 1
2 2
1
Trong các trung điểm được tạo ra, chỉ có 1 điểm \((1, 1)\) là điểm nguyên.
Đề bài nằm ở trong bài 1 - notes.
Tham gia vào kỳ thi ôn tập TS10 2025 - Contest #1 để đọc đề.