Tải bản đầy đủ (.doc) (2 trang)

Đề + Đáp án chi tiết Olympic 16 Tin 10

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (46.92 KB, 2 trang )

ĐỀ + ĐÁP ÁN OLYMPIC 16 TIN 10 – CHI TIẾT
ĐỀ
Bài 1./ Cho một số N (<=100) và dãy số từ a[1]->a[n] (<=10^9). Hãy in ra một cách nối
các số đó lại với nhau sau cho đạt được số lớn nhất.
INPUT:
- Dòng đầu là số N.
- N dòng tiếp là dãy A.
OUTPUT:
Một dòng duy nhất là số lớn nhất nhận được khi nối các số trong dãy A.
VD:
INPUT:
5
12
34
567
890
OUTPUT:
8905673412
Bài 2./ Một người muốn đi tham quan một số các thành phố rồi quay lại thành phố xuất
phát, sao cho đường đi là ngắn nhất. Có N thành phố (<=1000). Thành phố xuất phát S đi
qua K thành phố (1<=S,K<=N), K thành phố cho trước, đi tuần tự.
INPUT:
- Số N.
- Số S và K (cách nhau ít nhất một khoảng trắng).
- K thành phố trên dòng thứ 3. (cách nhau ít nhất một khoảng trắng).
- Cặp các thành phố mang ý nghĩa là có đường đi 2 chiều từ thành phố này qua thành phố
kia.
OUTPUT:
Một dòng duy nhất in số các thành phố ít nhất phải qua
< Bài này Nguyên quên mất VD rồi, thông cảm>
Bài 3./ Một con robot đi từ tọa độ đầu bên trái cùng đến tọa độ dưới bên phải cùng trong


một ma trận NxN (<=50). Ma trận chỉ chứa giá trị 0 và 1. Hãy chỉ ra số nhị phân nhỏ nhất
mà robot tạo ra trên đường đi từ tọa độ [1;1] -> [n;n].
INPUT:
- Số N.
- N dòng, N cột tiếp là ma trận.
OUTPUT:
Số nhị phân nhỏ nhất tìm được.
ĐÁP ÁN
Bài 1. Connect
Thuật toán:
- Gọi a là dãy gồm n chuỗi số đã cho
- Sắp xếp theo tiêu chuẩn nếu ai + aj < aj + ai thì hoán vị ai và aj
- Xuất a ta được kết quả
Các giá trị của n: 3 – 10 – 20 – 47 – 58 – 73 – 100
Bài 2. Tour
Thuật toán:
- Goi d1,d2,…,dk là danh sách các đỉnh phải đi qua rồi trở về S
- Gọi NN(a,b) là đường đi ít (ngắn) nhất từ a tới b (duyệt BFS hay Dijkstra)
- Kết quả = NN(S,d1) + NN(d1,d2) + … + NN(dk,S)
Các giá trị: N – K – M – Kết quả
Test 1. 8 – 3 – 11 – 7
Test 2. 100 – 9 – 100 – 710
Test 3. 255 – 7 – 254 – 14
Test 4. 500 – 9 – 124750 – 10
Test 5. 1000 – 4 – 999 – 3992
Test 6. 1000 – 10 – 999 – 1016
Bài 3. Robot
Thuật toán: Quy hoạch động như sau
- Gọi S[i, j] là chuỗi nhị phân nhỏ nhất có được khi đi từ ô (1, 1) đến (i, j)
- S[1, 1] = a[1, 1]

- Điền dòng 1 và cột 1 của S
For i:= 2 to n do
For j:=2 to n do s[i, j]:=min(s[i – 1, j],s[i, j – 1]+a[i, j];
- Kết quả = S[n, n]
Các giá trị của n: 6 – 10 – 15 – 25 – 31 – 40 – 50
Link down test file:

×