XOR COMPRESSION

Một phần của tài liệu ĐỀ THI OLYMPIC TIN HỌC QUỐC TẾ potx (Trang 138 - 145)

- .LCN với chương trình LOGO, PAS với chương trình PASCAL

Mã hóa kép

XOR COMPRESSION

Bạn đang cài đặt một ứng dụng cho máy điện thoại di động có màn hình đen trắng. Tọa độ x của màn hình bắt đầu từ trái sang phải và tọa độ y bắt đầu từ trên xuống dưới như trong hình vẽ. Với ứng dụng này, bạn cần những hình ảnh khác nhau nhưng không luôn cùng kích thước. Thay vì lưu giữ các hình ảnh, bạn muốn tạo ra ảnh bằng cách sử dụng thư viện đồ họa của điện thoạị Bạn có thể giả thiết rằng khi bắt đầu vẽ một hình ảnh, tất cả các điểm ảnh của màn hình có màu trắng. Trong thư viện của điẹn thoại chỉ có duy nhất lệnh XOR (L, R, T, B), lệnh này sẽ đảo giá trị của điểm ảnh trong hình chữ nhật với tọa độ trên trái là (L, T) và tọa độ dưới phải là (R, B), ở đây L là tọa độ trái (left), T là tọa độ trên (top), R là tọa độ phải (right) và B là tọa độ dưới (bottom). Chú ý rằng thứ tự các biến này không giống như trong một số thư viện đ họa khác.

Chẳng hạn để có hình 3, đầu tiên ta áp dụng lệnh XOR (2, 4, 2, 6) cho màn hình trắng , ta nhận được hình 1, tiếp theo, ta áp dụng lệnh XOR(3, 6, 4, 7) cho hình 1, ta nhận được hình 2, cuối cùng áp dụng lệnh XOR(1, 3, 3, 5) cho hình 2 ta nhận được hình 3.

Cho một tập các ảnh đen-trắng, công việc của bạn là với mỗi hình ảnh, sử dụng một số càng ít càng tốt lệnh XOR để tạo ra hình ảnh đó từ một màn hình ban đầu hoàn toàn trắng. Mỗi hình ảnh được cho bởi một tệp input. Bạn được cho các tệp input mô tả các hình ảnh và bạn phải nộp các tệp output mà mỗi tệp gồm các tham số gọi lệnh XOR cần thiết để tạo ra hình ảnh cho bởi tệp input tương ứng, không cần nộp chương trình tạo ra các tệp nàỵ

INPUT

Bạn được cho 10 tình huống trong các tệp văn bản đặt tên từ xor1.in đến xor10.in. Mỗi tệp input được tổ chức như saụ Dòng đầu tiên chứa 1 số nguyên N, 5< N < 2000, nghĩa là có N dòng và N cột trong bức ảnh.

Những dòng còn lại biểu diễn các dòng của bức ảnh từ trên xuống dướị Mỗi dòng gồm N

số nguyên: đó là các giá trị của điểm ảnh trên dòng tính từ trái sang phảị Mỗi số trong những số nguyên này hoặc là 0 hoặc là 1, số 0 thể hiện điểm ảnh trắng và số 1 thể hiện điểm ảnh đen.

OUTPUT

Bạn phải nộp 10 tệp output tương ứng với các tệp input đã chọ Recall that the size of an output file must be less than 1 megabytẹ

Dòng đầu tiên chứa văn bản sau:

#FILE xor I

trong đó số nguyên I là số hiệu của tệp input tương ứng. Dòng thứ hai gồm duy nhất một số nguyên K: đó là số lần gọi XOR được mô tả trong tệp. K dòng tiếp theo thể hiện những lần gọi này từ lần gọi đầu tiên đến lần gọi cuối cùng. Mỗi dòng trong số K dòng này gồm 4 số nguyên, đó là các tham số gọi XOR viết theo thứ tự L, R, T, B.

Ví dụ INPUT và OUTPUT

Cho điểm

Nếu

- các lần gọi XOR mô tả trong tệp output không tạo ra ảnh như yêu cầu, hoặc - số lần gọi XOR được chỉ ra trong tệp output không là K, hoặc

- trong tệp output file, K >40000, hoặc

- trong tệp output có số lần gọi XOR mà L>R hoặc T>B, hoặc - tệp output có số lần gọi XOR mà các tọa độ không dương, hoặc

- tệp output chứa một lần gọi XOR với một giá trị tọa độ vượt quá N, thì điểm của bạn là 0. Ngược lại, kết quả được tính theo công thức sau:

Số điểm được làm tròn đến 1 chữ số thập phân. Tổng số điểm được làm tròn đến số điểm gần nhất.

Giả sử bạn đã ra lời giải với 121 lần gọi XOR. Nếu đó là lời giải tốt nhất so với tất cả các thí sinh, điểm của bạn sẽ là 10. Nếu lời giải tốt nhất của các thí sinh dùng 98 lần gọi XOR, điểm của bạn sẽ là 1 + 9 ´ 98 / 121(= 8,289), và được làm tròn thành 8.3.

Lập kế hoạch theo khối (Batch Scheduling)

Bài toán

Có một chuỗi N công việc cần một chiếc máy thực hiện. Các công việc được đánh số theo thứ tự từ 1 đến N (N). Chuỗi công việc được phân vào một hoặc nhiều khối trong đó mỗi khối chứa một số liên tục công việc liên tục theo đúng thứ tự chuỗị Quá trình thực hiện công việc bắt đầu từ thời gian 0. Các khối được xử lý lần lượt theo nguyên tắc nếu khối b

chứa các công việc với số hiệu nhỏ hơn các công việc ở khối c, thì khối b được xử lý trước khối c. Các công việc trong một khối được thực hiện liên tục. Ngay sau khi thực hiện xong tất cả các công việc trong một khối, máy sẽ đưa ra kết quả thực hiện các công việc đó. Thời gian đưa ra kết quả thực hiện công việc j là thời gian máy xử lý xong khối có chứa công việc j

Gọi S là thời gian máy chuẩn bị để xử lý mỗi khốị Với mỗi công việc i, ta có hệ số chi phí là Fi và thời gian Ti để thực hiện công việc. Nếu một khối gồm các công việc x, x+1,... , x+k và thời gian bắt đầu thực hiện công việc là t, thì tổng thời gian đưa ra kết quả cho mọi công việc trong khối là t + S + (Tx + Tx+1 +... + Ty+-k1 + Ty). Chú ý máy đưa ra kết quả cho tất cả các công việc trong khối cùng một lúc. Nếu thời gian đưa ra kết quả thực hiện công việc iOi, thì chi phí thực hiện công việc đó là OiFi. Ví dụ, giả sử có 5 công việc, thời gian máy chuẩn bị là S = 1, (T1, T2, T3, T4, T5) = (1, 3, 4, 2, 1) và (F1, F2, F3, F4, F5) = (3, 2, 3, 3, 4). Nếu 5 công việc trên được chia thành ba khối {1, 2}, {3}, {4, 5}, thì tổng thời gian đưa ra kết quả là (O1, O2, O3, O4, O5) = (5, 5, 10, 14, 14) và chi phí để thực hiện tất cả các công việc đó lần lượt là (15, 10, 30, 42, 56). Tổng chi phí để phân chia công việc là tổng chi phí thực hiện tất cả các công việc. Tổng chi phí của ví dụ trên là 153. Cho trước thời gian chuẩn bị xử lý khối, chuỗi công việc, thời gian thực hiện công việc và hệ số chi phí cho trước, hãy viết chương trình tính tổng chi phí tối thiểụ

INPUT

Dòng đầu tiên chứa số công việc N, 1≤N≤10000. Dòng thứ hai chứa thời gian máy chuẩn bị để xử lý khối, thời gian S này là một số nguyên, 0≤S≤ 50. N dòng tiếp theo chứa thông tin về các công việc theo thứ tự 1, 2,..., N. Số đầu tiên trên mỗi dòng đó là số nguyên Ti, chỉ thời gian máy thực hiện công việc 1≤Ti≤ 100. Sau đó là một số nguyên Fi, 1 ≤Fi≤ 100, chỉ hệ số chi phí thực hiện công việc.

OUTPUT

Output là một dòng chứa một số nguyên chỉ tổng chi phí tối thiểụ

Ví dụ

INPUT và OUTPUT

Ví dụ 2 là ví dụ xét đến ở trên.

Chú ý

Với mọi bộ dữ liệu test, tổng chi phí đều không vượt quá 231 - 1.

Cho điểm

Nếu chương trình đưa ra kết quả đúng trong khoảng thời gian giới hạn, bạn sẽ được điểm tối đa, ngược lại bạn sẽ được 0 điểm.

Mạng lưới xe buýt (Bus Terminals)

Thành phố Yong-In có kế hoạch xây dựng một mạng lưới xe buýt gồm N bến đỗ. Mỗi bến đỗ xe nằm ở một góc phố. Yong-In là một thành phố hiện đại nên các con đường trong thành phố tạo thành một lưới ô vuông bằng nhaụ Hai trong số các bến đỗ đó được chọn làm trung tâm là H1 và H2. Hai bến xe trung tâm được nối với nhau bằng một tuyến xe buýt trực tiếp và N - 2 bến xe còn lại chỉ được nối trực tiếp với H1 hoặc H2 (nhưng không đồng thời nối trực tiếp với cả hai bến xe trung tâm) mà không nối trực tiếp với bến xe nào khác

Khoảng cách giữa hai bến xe bất kỳ là đường đi ngắn nhất giữa các con phố. Nghĩa là, nếu một bến xe có tọa độ là (x, y), thì khoảng cách giữa hai bến xe (x1, y1) và (x2, y2) là . Nếu hai bến xe AB cùng nối với bến xe trung tâmH1, thì khoảng cách giữa hai bến xe này bằng tổng khoảng cách từ A đến H1 và từ H1 đến B. Nếu hai bến xe AB nối với hai bến xe trung tâm khác nhau, ví dụ, A nối với H1 và B nối với H2, thì khoảng cách giữa hai bến xe này là tổng khoảng cách từ A đến H1, từ H1 đến H2, và từ H2 đến B.

Ban quản lý dự án của thành phố Yong-In muốn đảm bảo chắc chắn rằng tất cả mọi người dân trong thành phố có thể đi đến bất cứ điểm nào trong thành phố một cách nhanh nhất. Do đó, ban quản lý muốn chọn hai bến xe làm bến xe trung tâm sao cho khoảng cách lớn nhất giữa hai bến xe bất kỳ là ngắn nhất có thể được.

Một cách chọn P (chọn hai bến xe trung tâm) được coi là tối ưu hơn cách chọn Q nếu khoảng cách lớn nhất giữa hai bến xe ở cách chọn P ngắn hơn ở cách chọn Q. Hãy viết chương trình tính khoảng cách lớn nhất giữa hai bến xe buýt trong cách chọn P.

INPUT

Dòng đầu tiên chứa một số nguyên dương N, 2 ≤N ≤ 500, chỉ số bến xe buýt. Mỗi dòng trong số N dòng tiếp theo chứa tọa độ của các bến xẹ Tọa độ x và y đều là các số nguyên dương nhỏ hơn 5000. Hai bến xe buýt khác nhau phải nằm trên hai vị trí khác nhaụ

OUTPUT

Output là một dòng chứa một số nguyên dương chỉ khoảng cách lớn nhất giữa hai bến xe buýt

Ví dụ

Hình dưới minh họa mạng lưới xe buýt trong ví dụ trên. Nếu trong ví dụ 1, bến xe 3 và 4 được chọn làm bến trung tâm, thì khoảng cách lớn nhất giữa hai bến xe 2 và 5 hoặc giữa 2 và 1 là khoảng cách lớn nhất. Không có cách lựa chọn bến xe trung tâm tối ưu hơn và khoảng cách lớn nhất lúc này là 20.

Với mạng lưới xe buýt trong ví dụ 2, nếu bến xe 5 và 6 được chọn là bến xe trung tâm, thì khoảng cách giữa hai bến xe 2 và 7 là khoảng cách lớn nhất. Không có cách lựa chọn bến xe trung tâm tối ưu hơn và khoảng cách lớn nhất lúc này là 25.

Cho điểm

Nếu chương trình của bạn cho kết quả đúng trong khoảng thời gian cho phép, bạn sẽ giành được điểm tối đa, ngược lại bạn sẽ đượcc 0 điểm.

Một phần của tài liệu ĐỀ THI OLYMPIC TIN HỌC QUỐC TẾ potx (Trang 138 - 145)

Tải bản đầy đủ (DOC)

(187 trang)
w