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

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn: BTC
Người gửi: Thpt Chuyên Vị Thanh
Ngày gửi: 00h:02' 08-04-2010
Dung lượng: 30.0 KB
Số lượt tải: 251
Nguồn: BTC
Người gửi: Thpt Chuyên Vị Thanh
Ngày gửi: 00h:02' 08-04-2010
Dung lượng: 30.0 KB
Số lượt tải: 251
Số lượt thích:
0 người
ĐỀ + ĐÁ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: http://www.mediafire.com/?zuggj2ni13m
ĐỀ
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: http://www.mediafire.com/?zuggj2ni13m
 







Các ý kiến mới nhất