| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Nhân bản chuỗi | 100 (p) | 1.0s | 256M |
| 2 | Trạm sạc robot | 100 (p) | 1.0s | 256M |
| 3 | Gộp xâu | 100 (p) | 2.0s | 1G |
Trong phòng thí nghiệm nano, các nhà khoa học đang nghiên cứu một quy trình tổng hợp vật chất mang tên "nhân hai cộng một". Quy trình này biến đổi một cấu trúc vật chất (được mô tả bằng một xâu ký tự \(a\)) theo nguyên tắc sau:
Ví dụ: Từ xâu ab, quy trình sẽ tạo ra ab + ab + x = ababx.
Mọi cấu trúc đều bắt đầu từ "hư không" (xâu rỗng). Nhà nghiên cứu An vừa tìm thấy một số mẫu vật lạ và muốn kiểm tra nguồn gốc của chúng. Với mỗi mẫu vật (xâu \(s\)), An có hai loại câu hỏi:
YES nếu câu trả lời là có thể, hoặc NO nếu không thể.Test 1
4
a 1
aab 1
aba 1
aba 2
YES
YES
NO
YES
Giải thích:
a, loại 1): Từ rỗng nhân đôi \(\to\) rỗng thêm a \(\to\) a. \(\to\) YES.aab, loại 1): Từ a (đã tạo ở trên) nhân đôi \(\to\) aa thêm b \(\to\) aab. \(\to\) YES.aba, loại 1): Nếu xuất phát từ a, bước tiếp theo phải là aa + \(c\). aba không khớp dạng này. \(\to\) NO.aba, loại 2): Đổi chỗ aba thành aab. aab có thể tạo ra được (như ví dụ 2). \(\to\) YES.Tại trung tâm nghiên cứu AI, có hai robot thám hiểm Alpha và Beta đang cần nạp năng lượng. Hệ thống sạc bao gồm các trạm năng lượng nằm trên một trục thẳng, tổng cộng có \(2 \times n\) trạm sạc. Mỗi trạm sạc cung cấp một loại năng lượng thuộc cấp độ từ \(1\) đến \(n\).
Để kích hoạt hệ thống tối thượng, cả Alpha và Beta đều phải lần lượt thu thập đủ bộ năng lượng từ cấp \(1\) đến cấp \(n\) theo đúng thứ tự (tức là phải có cấp \(i - 1\) mới được nạp cấp \(i\)).
Hệ thống vận hành theo quy tắc như sau:
Hệ thống đôi khi gặp sự cố và đảo vị trí các trạm sạc cho nhau. Với mỗi thay đổi đó, bạn hãy tính toán lại tổng quãng đường tối ưu.
Test 1
3 2
1 1 2 2 3 3
2 3
1 4
7
12
Giải thích:
[1, 2, 1, 2, 3, 3].[2, 2, 1, 1, 3, 3].Với hai xâu \(a\) và \(b\), Alice có thể gộp hai xâu thành một xâu \(c\) theo quy tắc sau:
Ví dụ, Alice có thể gộp hai xâu "ab" và "cdef" thành "acbdef". Lưu ý rằng thứ tự của các xâu trong thao tác gộp là quan trọng, chẳng hạn Alice có thể gộp hai xâu "cdef" và "ab" thành "cadbef".
Trên bảng đang có \(n\) xâu \(s_1, s_2, ..., s_n\) từ trái sang phải. Alice thực hiện \(n-1\) hành động. Với hành động thứ \(i\), cô lấy hai xâu \(s_{u_i}\) và \(s_{v_i}\) đang có trên bảng, gộp hai xâu để tạo thành xâu \(s_{n+i}\) và viết nó lên bảng, sau đó xóa hai xâu \(s_{u_i}\) và \(s_{v_i}\). Alice muốn biết sau khi mình thực hiện tất cả các hành động thì xâu cuối cùng còn lại là xâu nào.
Test 1
3
abc
de
fgh
1 3
2 4
daefbgch
Sau thao tác đầu tiên, xâu "abc" và xâu "fgh" được gộp thành "afbgch".
Sau thao tác thứ hai, xâu "de" và xâu "afbgch" được gộp thành "daefbgch".
"b", còn lại là ký tự "a"