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="">=10^9).>=100)>
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
ĐỀ + ĐÁP ÁN OLYMPIC 16 TIN 10 – CHI TIẾT ĐỀ Bài 1./ Cho một số N (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 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 ( [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:
Tài liệu đính kèm: