| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | IOI 2006 - Deciphering the Mayan Writing | 100 (p) | 3.0s | 32M |
| 2 | IOI 2006 - Pyramid | 100 (p) | 1.0s | 32M |
| 3 | IOI 2006 - Forbidden Subgraph | 100 (p) | 10.0s | 256M |
Việc giải mã chữ viết Maya đã tỏ ra khó khăn hơn những gì các nghiên cứu ban đầu dự đoán. Sau gần hai trăm năm, người ta vẫn chỉ hiểu được rất ít về loại chữ viết này. Chỉ trong ba thập kỷ gần đây mới có những tiến bộ thực sự.
Chữ viết Maya dựa trên các hình vẽ nhỏ gọi là ký tự tượng hình, dùng để biểu diễn âm thanh. Các từ trong tiếng Maya thường được viết bằng cách ghép những ký tự tượng hình ở các vị trí khác nhau.
Một trong những khó khăn khi giải mã chữ viết Maya là xác định thứ tự đọc. Khi sắp xếp các ký tự tượng hình để tạo thành một từ, đôi khi người viết lựa chọn vị trí dựa vào quan điểm thẩm mỹ của riêng mình nhiều hơn là theo một quy tắc cụ thể. Vì vậy, dù đã biết âm thanh ứng với nhiều ký tự, các nhà khảo cổ đôi khi vẫn không chắc phải phát âm một từ được viết ra như thế nào.
Các nhà khảo cổ đang tìm một từ đặc biệt \(W\). Họ biết các ký tự tượng hình của từ này nhưng không biết tất cả những cách có thể sắp xếp chúng. Biết rằng bạn sẽ tham dự IOI 2006, họ đã nhờ bạn giúp đỡ. Họ sẽ cung cấp \(g\) ký tự tượng hình của \(W\) và một dãy \(S\) gồm tất cả các ký tự tượng hình trong những bản khắc đang được nghiên cứu, theo đúng thứ tự xuất hiện. Hãy giúp họ đếm số lần từ \(W\) có thể xuất hiện.
Cho các ký tự tượng hình của \(W\) và dãy \(S\), hãy viết chương trình đếm số đoạn gồm đúng \(g\) ký tự liên tiếp trong \(S\) là một hoán vị của các ký tự trong \(W\).
Đọc từ đầu vào chuẩn:
Các ký tự hợp lệ trong cả \(W\) và \(S\) là a đến z và A đến Z. Chữ hoa và chữ thường được coi là khác nhau.
Ghi ra đầu ra chuẩn một dòng chứa số lần \(W\) có thể xuất hiện trong \(S\).
Trong một tập các bộ dữ liệu kiểm tra có tổng cộng \(50\) điểm, mỗi lần chạy đều thỏa mãn \(g \le 10\).
Ví dụ 1
4 11
cAda
AbrAcadAbRa
2
Theo mặc định trong FreePascal, một biến kiểu string có giới hạn độ dài là \(255\) ký tự. Để sử dụng xâu dài hơn, hãy thêm chỉ thị {$H+} ngay bên dưới dòng program ...; trong mã nguồn.
IOI 2006, ngày thi thứ nhất: Deciphering the Mayan Writing, bản tiếng Anh 1.3. Tác giả đề bài: Cesar Cepeda (Mexico).
Sau khi giành chiến thắng trong một trận đánh lớn, vua Jaguar muốn xây một kim tự tháp vừa làm đài tưởng niệm chiến thắng, vừa làm lăng mộ cho những người lính dũng cảm đã hy sinh. Kim tự tháp sẽ được xây ngay trên chiến trường, có đáy hình chữ nhật gồm \(a\) cột và \(b\) hàng. Bên trong kim tự tháp, ở ngang mặt đất, có một gian mộ hình chữ nhật nhỏ hơn gồm \(c\) cột và \(d\) hàng, chứa thi hài và vũ khí của những người lính đã ngã xuống.
Các kiến trúc sư của nhà vua đã khảo sát chiến trường dưới dạng một lưới gồm \(m\) cột và \(n\) hàng, đồng thời đo độ cao của từng ô bằng một số nguyên.
Cả kim tự tháp lẫn gian mộ phải phủ trọn các ô của lưới, với các cạnh song song với các cạnh của chiến trường. Độ cao của các ô bên trong gian mộ phải được giữ nguyên, còn phần địa hình thuộc đáy kim tự tháp ở bên ngoài gian mộ sẽ được san bằng bằng cách chuyển cát từ các ô cao xuống các ô thấp. Độ cao cuối cùng của nền là độ cao trung bình của tất cả các ô thuộc đáy kim tự tháp, không tính các ô của gian mộ. Các kiến trúc sư có thể đặt gian mộ ở bất kỳ vị trí nào bên trong kim tự tháp, miễn là quanh gian mộ luôn có một bức tường dày ít nhất một ô.
Hãy giúp các kiến trúc sư chọn vị trí đặt kim tự tháp trên chiến trường và vị trí đặt gian mộ bên trong kim tự tháp sao cho, với các kích thước đã cho, độ cao cuối cùng của nền lớn nhất có thể.
Đọc từ đầu vào chuẩn:
Ghi ra đầu ra chuẩn hai dòng:
Nếu có nhiều cách bố trí tối ưu, bạn có thể đưa ra bất kỳ cách nào trong số đó.
Trong một tập các bộ dữ liệu kiểm tra có tổng cộng \(30\) điểm, mỗi lần chạy đều đồng thời thỏa mãn \(3 \le m \le 10\) và \(3 \le n \le 10\).
Ví dụ 1
8 5 5 3 2 1
1 5 10 3 7 1 2 5
6 12 4 4 3 3 1 5
2 4 3 1 6 6 19 8
1 1 1 3 4 2 4 5
6 6 3 3 3 2 2 2
4 1
6 2
IOI 2006, ngày thi thứ nhất: Pyramid, bản tiếng Anh 1.2. Tác giả đề bài: Hugo Ryckeboer (Argentina).
Hai đồ thị vô hướng \(G\) và \(H\) được gọi là đẳng cấu nếu chúng có cùng số đỉnh và tồn tại một tương ứng một-một giữa các đỉnh của chúng sao cho: với hai đỉnh phân biệt bất kỳ của \(G\), có một cạnh nối chúng khi và chỉ khi có một cạnh nối hai đỉnh tương ứng trong \(H\).
Chẳng hạn, hai đồ thị dưới đây đẳng cấu, mặc dù hình vẽ của chúng trông khác nhau:
Một tương ứng một-một chứng minh hai đồ thị này đẳng cấu là \(a \leftrightarrow 1\), \(b \leftrightarrow 6\), \(c \leftrightarrow 8\), \(d \leftrightarrow 3\), \(g \leftrightarrow 5\), \(h \leftrightarrow 2\), \(i \leftrightarrow 4\), \(j \leftrightarrow 7\). Ngoài ra còn có những tương ứng khác.
Một đồ thị con của đồ thị \(G\) là một đồ thị có tập đỉnh và tập cạnh lần lượt là các tập con của tập đỉnh và tập cạnh của \(G\). Lưu ý rằng \(G\) cũng là một đồ thị con của chính nó. Hình dưới đây minh họa một đồ thị và một trong các đồ thị con của nó:
Ta nói đồ thị \(G\) chứa đồ thị \(H\) nếu có ít nhất một đồ thị con \(H'\) của \(G\) đẳng cấu với \(H\). Hình sau minh họa một đồ thị \(G\) chứa đồ thị \(H\):
Cho hai đồ thị vô hướng \(G\) và \(H\), hãy tạo một đồ thị con \(G'\) của \(G\) sao cho \(G'\) có cùng số đỉnh với \(G\) và không chứa \(H\). Có thể có nhiều đồ thị con thỏa mãn các điều kiện trên; hãy đưa ra một đồ thị như vậy có càng nhiều cạnh càng tốt.
Có lẽ chiến lược đơn giản nhất là xét các cạnh của \(G\) theo thứ tự chúng được biểu diễn trong tệp dữ liệu vào, rồi lần lượt thử thêm từng cạnh vào \(G'\), kiểm tra ở mỗi bước xem \(G'\) có chứa \(H\) hay không. Chỉ giữ lại cạnh nếu sau khi thêm cạnh đó, \(G'\) vẫn không chứa \(H\). Một cài đặt đúng của thuật toán tham lam này sẽ nhận được một phần điểm, nhưng còn có những chiến lược tốt hơn nhiều.
Đây là bài chỉ nộp kết quả. Bạn được cung cấp \(10\) tệp forbidden1.in đến forbidden10.in. Mỗi tệp forbiddenK.in có cấu trúc như sau:
Như vậy, ngoại trừ dòng đầu tiên, dữ liệu vào chính là hai ma trận kề của \(H\) và \(G\), theo thứ tự này.
Bạn phải nộp \(10\) tệp kết quả, mỗi tệp ứng với một tệp dữ liệu vào. Tệp forbiddenK.out phải có cấu trúc sau:
#FILE forbidden K, trong đó \(K\) là số từ \(1\) đến \(10\) ứng với tệp dữ liệu vào đang được giải.Như vậy, ngoại trừ hai dòng đầu, dữ liệu ra chính là ma trận kề của \(G'\).
Phiên bản này sử dụng quy tắc chấm điểm cố định của LQDOJ, phỏng theo cách chuẩn hóa của bản chuyển thể trên Codeforces. Điểm không phụ thuộc vào bài nộp của người chơi khác và không tái hiện điểm lịch sử IOI 2006.
Mỗi tệp chiếm \(10\) điểm trong tổng số \(100\) điểm. Kết quả sai định dạng, thêm cạnh không có trong \(G\), thay đổi số đỉnh hoặc chứa \(H\) nhận \(0\) điểm cho tệp đó. Ma trận phải đối xứng, chỉ chứa \(0,1\) và có đường chéo bằng \(0\). Việc chứa \(H\) xét theo đồ thị con thông thường, không yêu cầu đồ thị con cảm sinh.
Với kết quả hợp lệ, gọi \(E_y\) là số cạnh giữ lại, \(E_b\) là mốc cơ sở và \(T\) là mốc đạt đủ điểm trong bảng sau. Phần trăm điểm của tệp là:
| Tệp \(K\) | Mốc cơ sở \(E_b\) | Mốc đủ điểm \(T\) |
|---|---|---|
| 1 | 1 | 3 |
| 2 | 6 | 82 |
| 3 | 4 | 52 |
| 4 | 1 | 134 |
| 5 | 2 | 23 |
| 6 | 2 | 126 |
| 7 | 99 | 197 |
| 8 | 31 | 195 |
| 9 | 140 | 2868 |
| 10 | 541 | 12125 |
Các mốc \(T\) được chọn từ số cạnh của các cách xây dựng trong lời giải chính thức; riêng tệp \(7\) dùng mốc \(197\) được chứng minh từ dữ liệu công khai. Đây là các mốc của phiên bản này, không phải khẳng định mọi mốc đều tối ưu. Kết quả hợp lệ vượt \(T\) vẫn nhận đủ điểm và không làm thay đổi mốc chấm.
Trong kỳ thi này, điểm từng tệp là điểm cao nhất của tệp đó trên tất cả các lần nộp của bạn, rồi cộng các điểm này để tính tổng. Đây là quy tắc tổng hợp điểm của phiên bản chuyển thể, không phải quy tắc lịch sử IOI 2006.
Tổng điểm là tổng của \(10p/100\) trên cả \(10\) tệp. Không làm tròn điểm từng tệp về số nguyên. Đồ thị không có cạnh nhận \(0\) điểm. Nộp một tệp ZIP chứa trực tiếp forbidden1.out đến forbidden10.out, không đặt trong thư mục con. Tệp thiếu nhận \(0\) điểm; các tệp còn lại được chấm độc lập. ZIP tối đa \(10\) MiB; mỗi tệp kết quả phải nhỏ hơn \(8\) MiB, mỗi dòng ma trận tối đa \(8192\) ký tự.
Ví dụ 1
3 5
0 1 0
1 0 1
0 1 0
0 1 0 0 0
1 0 1 0 0
0 1 0 1 0
0 0 1 0 1
0 0 0 1 0
#FILE forbidden K
5
0 1 0 0 0
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Ví dụ minh họa cấu trúc của forbiddenK.in và forbiddenK.out; \(K\) trong dòng tiêu đề là số thứ tự tệp tương ứng, từ \(1\) đến \(10\). Có nhiều kết quả có thể đưa ra. Kết quả minh họa ở trên hợp lệ nhưng chưa tối ưu.
IOI 2006, ngày thi thứ nhất: Forbidden Subgraph, bản tiếng Anh 1.2. Tác giả đề bài: Francisco Zaragoza (Mexico).