| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | USACO 2014 - Auto-Complete | 100 (p) | 4.0s | 512M |
| 2 | USACO 2014 - Roadblock | 100 (p) | 4.0s | 512M |
| 3 | USACO 2014 - Secret Code | 100 (p) | 4.0s | 512M |
Bessie có một chiếc điện thoại di động mới và rất thích gửi tin nhắn, mặc dù cô thường xuyên mắc lỗi chính tả vì bộ móng lớn khiến cô khó gõ trên màn hình nhỏ. Farmer John đồng ý giúp cô bằng cách viết một ứng dụng tự động hoàn thành từ: ứng dụng nhận một phần đầu của từ và đề xuất cách hoàn thành nó.
Ứng dụng tự động hoàn thành có quyền truy cập vào một từ điển gồm \(W\) từ, mỗi từ chỉ gồm các chữ cái thường từ a đến z, và tổng số chữ cái của tất cả các từ không vượt quá \(1\,000\,000\). Đầu vào của ứng dụng còn có danh sách \(N\) phần đầu của từ (\(1 \le N \le 1\,000\)), mỗi phần gồm không quá \(1\,000\) chữ cái thường. Cùng với mỗi phần đầu thứ \(i\), một số nguyên \(K_i\) cũng được cung cấp; ứng dụng phải tìm từ thứ \(K_i\) theo thứ tự bảng chữ cái trong số các từ nhận phần đầu thứ \(i\) làm tiền tố. Nói cách khác, nếu sắp xếp tất cả các cách hoàn thành hợp lệ của phần đầu thứ \(i\), ứng dụng phải đưa ra cách hoàn thành đứng thứ \(K_i\) trong dãy này.
a đến z.Với mỗi phần đầu thứ \(i\), in ra trên một dòng chỉ số trong từ điển (một số nguyên từ \(1\) đến \(W\)) của cách hoàn thành thứ \(K_i\) theo thứ tự bảng chữ cái, hoặc \(-1\) nếu có ít hơn \(K_i\) cách hoàn thành.
Ví dụ 1
10 3
dab
ba
ab
daa
aa
aaa
aab
abc
ac
dadba
4 a
2 da
4 da
3
1
-1
Các cách hoàn thành của a là {aa,aaa,aab,ab,abc,ac}. Cách thứ \(4\) là ab, được liệt kê ở dòng thứ \(3\) của từ điển. Các cách hoàn thành của da là {daa,dab,dadba}. Cách thứ \(2\) là dab, được liệt kê ở dòng thứ \(1\) của từ điển. Không có cách hoàn thành thứ \(4\) của da.
USACO 2014 February Contest, Silver — Auto-Complete
Tác giả: Traditional.
Mỗi buổi sáng, FJ thức dậy và đi qua trang trại từ nhà đến chuồng. Trang trại gồm \(N\) cánh đồng (\(1 \le N \le 250\)) được nối với nhau bởi \(M\) con đường hai chiều (\(1 \le M \le 25\,000\)), mỗi con đường có một độ dài tương ứng. Nhà của FJ nằm ở cánh đồng \(1\), còn chuồng nằm ở cánh đồng \(N\). Không có cặp cánh đồng nào được nối bởi nhiều con đường trùng lặp, và có thể di chuyển giữa hai cánh đồng bất kỳ trong trang trại bằng cách đi theo một dãy đường thích hợp. Khi đi từ cánh đồng này đến cánh đồng khác, FJ luôn chọn một lộ trình gồm một dãy đường có tổng độ dài nhỏ nhất.
Những cô bò của Farmer John, vẫn luôn thích gây rắc rối, quyết định cản trở thói quen buổi sáng của ông. Chúng dự định chất một đống kiện cỏ khô trên đúng một trong \(M\) con đường của trang trại, khiến độ dài của con đường đó tăng gấp đôi. Những cô bò muốn chọn con đường để chặn sao cho mức tăng quãng đường từ nhà đến chuồng của FJ là lớn nhất. Hãy giúp chúng xác định có thể làm lộ trình của FJ dài thêm nhiều nhất bao nhiêu.
In ra mức tăng lớn nhất có thể của tổng độ dài lộ trình ngắn nhất của FJ khi tăng gấp đôi độ dài của một con đường duy nhất.
Ví dụ 1
5 7
2 1 5
1 3 1
3 2 8
3 5 7
3 4 3
2 4 7
4 5 2
2
Có \(5\) cánh đồng và \(7\) con đường. Ban đầu, đường đi ngắn nhất từ nhà (cánh đồng \(1\)) đến chuồng (cánh đồng \(5\)) là \(1-3-4-5\), có tổng độ dài \(1+3+2=6\).
Nếu những cô bò tăng gấp đôi độ dài con đường từ cánh đồng \(3\) đến cánh đồng \(4\) (tăng từ \(3\) lên \(6\)), lộ trình ngắn nhất của FJ lúc này là \(1-3-5\), có tổng độ dài \(1+7=8\), dài hơn lộ trình ngắn nhất ban đầu \(2\) đơn vị.
USACO 2014 February Contest, Gold — Roadblock
Tác giả: Brian Dean.
Farmer John có một thông điệp bí mật muốn giấu những cô bò của mình; thông điệp là một xâu có độ dài ít nhất \(2\) và chỉ chứa các ký tự từ A đến Z.
Để mã hóa thông điệp, FJ áp dụng một chuỗi các "thao tác" lên nó. Mỗi thao tác trên một xâu \(S\) trước hết rút ngắn \(S\) bằng cách xóa một số nhưng không phải tất cả các ký tự đầu xâu, hoặc một số nhưng không phải tất cả các ký tự cuối xâu, sau đó ghép xâu \(S\) ban đầu vào đầu hoặc cuối xâu đã rút ngắn. Chẳng hạn, một thao tác trên xâu ABC có thể tạo ra một trong tám xâu sau:
AABC
ABABC
BCABC
CABC
ABCA
ABCAB
ABCBC
ABCC
Cho xâu đã mã hóa cuối cùng, hãy đếm số cách FJ có thể tạo ra xâu này bằng cách áp dụng liên tiếp một hoặc nhiều thao tác lên một xâu nguồn nào đó. Các thao tác được coi là khác nhau ngay cả khi chúng tạo ra cùng một bản mã của thông điệp của FJ. Chẳng hạn, có bốn cách riêng biệt để thu được AAA từ AA.
In đáp án theo modulo \(2014\).
In ra theo modulo \(2014\) số cách FJ có thể tạo ra xâu đã cho bằng cách áp dụng liên tiếp một hoặc nhiều thao tác lên một xâu ban đầu có độ dài ít nhất \(2\). Nếu không có cách nào, in ra \(0\).
Ví dụ 1
ABABA
8
Các cách khác nhau để FJ tạo ra ABABA là:
ABA \(\to\) AB+ABA.ABA \(\to\) ABA+BA.AB \(\to\) AB+A \(\to\) AB+ABA.AB \(\to\) AB+A \(\to\) ABA+BA.BA \(\to\) A+BA \(\to\) AB+ABA.BA \(\to\) A+BA \(\to\) ABA+BA.ABAB \(\to\) ABAB+A.BABA \(\to\) A+BABA.USACO 2014 February Contest, Silver — Secret Code
Tác giả: Brian Dean và Lewin Gan.