Tuyển tập đề thi môn Tin học Quốc gia (2005-2008)

Kết quả: Đưa ra file văn bản COLLECT.OUT. Nếu không tồn tại cách đổi để có được bộ sưu tập có

giá trị, file kết quả chỉ gồm một số -1. Trong trường hợp ngược lại, dòng đầu ghi số v là số các bộ tiền

cổ có giá trị mà Alibaba có thể đổi được. Dòng thứ i trong v dòng tiếp theo ghi 4 số nguyên

Zi , mô t Si , M i ,ki ả bộ sưu tập có giá trị thứ i và số lần đổi ki ít nhất không vượt quá k cần thực hiện để

có được bộ sưu tập ấy.

pdf50 trang | Chia sẻ: Thái Huyền | Ngày: 25/07/2023 | Lượt xem: 278 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Tuyển tập đề thi môn Tin học Quốc gia (2005-2008), để xem tài liệu hoàn chỉnh bạn hãy click vào nút TẢi VỀ
trong mạng lưới 
giao thông; 
• Dòng thứ k trong số m dòng tiếp theo chứa 4 số nguyên dương i, j, tij, cij (tij, cij ≤ 104) mô tả 
đường nối trực tiếp từ nút i đến nút j, thời gian và chi phí năng lượng tương ứng. 
Hai số liên tiếp trên một dòng trong file dữ liệu cách nhau ít nhất một dấu cách. 
Kết quả: Ghi ra file văn bản ROBOT.OUT một số nguyên dương w tìm được. 
Ví dụ: 
ROBOT.INP ROBOT.OUT 
4 
0 1 1 0 
5 
1 2 5 4 
1 3 4 3 
1 4 9 4 
2 4 4 1 
3 4 5 2 
3 
5, 
2 
4, 
1 9, 
4 
4, 
3 
5, 
4 
1 
2 
3 
4 
Nút 2 và nút 3 có trạm tiếp năng lượng 
 Olympic tin học Việt Nam 
Năm 2008 
Bài 1. Trò chơi với dãy số (6 điểm) 
Hai bạn học sinh trong lúc nhàn rỗi nghĩ ra trò chơi sau đây. Mỗi bạn chọn trước một dãy số gồm n số 
nguyên. Giả sử dãy số mà bạn thứ nhất chọn là 
 b1, b2, ..., bn 
còn dãy số mà bạn thứ hai chọn là 
 c1, c2, ..., cn. 
Mỗi lượt chơi mỗi bạn đưa ra một số hạng trong dãy số của mình. Nếu bạn thứ nhất đưa ra số hạng bi 
(1 ≤ i ≤ n), còn bạn thứ hai đưa ra số hạng cj (1 ≤ j ≤ n) thì giá của lượt chơi đó sẽ là |bi + cj|. 
Ví dụ: Giả sử dãy số bạn thứ nhất chọn là 1, - 2; còn dãy số mà bạn thứ hai chọn là 2, 3. Khi đó các 
khả năng có thể của một lượt chơi là (1, 2), (1, 3), (-2, 2), (-2, 3). Như vậy, giá nhỏ nhất của một lượt 
chơi trong số các lượt chơi có thể là 0 tương ứng với giá của lượt chơi (-2, 2). 
Yêu cầu: Hãy xác định giá nhỏ nhất của một lượt chơi trong số các lượt chơi có thể. 
Dữ liệu: Vào từ file văn bản SEQGAME.INP: 
• Dòng đầu tiên chứa số nguyên dương n (n ≤ 105); 
• Dòng thứ hai chứa dãy số nguyên b1, b2, ..., bn (|bi| ≤ 109, i = 1, 2, ..., n); 
• Dòng thứ ba chứa dãy số nguyên c1, c2, ..., cn (|cj| ≤ 109, j = 1, 2, ..., n). 
Hai số liên tiếp trên một dòng được ghi cách nhau bởi dấu cách. 
Kết quả: Ghi ra file văn bản SEQGAME.OUT giá nhỏ nhất tìm được. 
Ví dụ: 
SEQGAME.INP SEQGAME.OUT 
2 
1 -2 
2 3 
0 
Ràng buộc: 60% số tests ứng với 60% số điểm của bài có 1 ≤ n ≤ 1000. 
 Olympic tin học Việt Nam 
Bài 2. Lò cò (7 điểm) 
Nhảy lò cò là trò chơi dân gian của Việt Nam. Người trên hành tinh X cũng rất thích trò chơi này và 
họ đã cải biên trò chơi này như sau: Trên mặt phẳng vẽ n vòng tròn được đánh số từ 1 đến n. Tại vòng 
tròn i người ta điền số nguyên dương ai. Hai số trên hai vòng tròn tuỳ ý không nhất thiết phải khác 
nhau. Tiếp đến người ta vẽ các mũi tên, mỗi mũi tên hướng từ một vòng tròn đến một vòng tròn khác. 
Quy tắc vẽ mũi tên là: Nếu có ba số ai, aj, ak thoả mãn: ak=ai+aj thì vẽ mũi tên hướng từ vòng tròn i 
đến vòng tròn k và mũi tên hướng từ vòng tròn j đến vòng tròn k. Người chơi chỉ được di chuyển từ 
một vòng tròn đến vòng tròn khác nếu có mũi tên từ vòng tròn xuất phát hướng đến vòng tròn đích. 
Người chơi có thể xuất phát từ một trong số các vòng tròn, di chuyển theo các mũi tên đã vẽ để đến 
các vòng tròn khác. Người thắng cuộc sẽ là người tìm được cách di chuyển qua nhiều vòng tròn nhất. 
Ví dụ: Với 5 vòng tròn và các số trong vòng tròn là 1, 2, 8, 3, 5, trò chơi được trình bày trong hình 
dưới đây: 
Khi đó có thể di chuyển được nhiều nhất qua 4 vòng tròn (tương ứng với đường di chuyển được tô 
đậm trên hình vẽ). 
Yêu cầu: Hãy xác định xem trong trò chơi mô tả ở trên, nhiều nhất có thể di chuyển được qua bao 
nhiêu vòng tròn. 
Dữ liệu: Vào từ file văn bản JUMP.INP: 
• Dòng đầu tiên chứa số nguyên n (3 ≤ n ≤ 1000); 
• Dòng thứ hai chứa dãy số nguyên dương a1, a2, ..., an (ai ≤ 109, i = 1, 2, ..., n). 
Hai số liên tiếp trên một dòng được ghi cách nhau bởi dấu cách. 
Kết quả: Ghi ra file văn bản JUMP.OUT số lượng vòng tròn trên đường di chuyển tìm được. 
Ví dụ: 
JUMP.INP JUMP.OUT 
5 
1 2 8 3 5 
4 
Ràng buộc: 60% số tests ứng với 60% số điểm của bài có 3 ≤ n ≤ 100. 
1 
2 
3 
5 
8 
 Olympic tin học Việt Nam 
Bài 3. Quà Tết (7 điểm) 
ChuNn bị đón năm mới, Công ty bánh kẹo Hương Dứa đã làm một tấm sôcôla cực lớn với mục đích 
ghi tên mình vào sách kỷ lục Ghi nét đồng thời quảng bá thương hiệu trước công chúng. Tấm sôcôla 
có hình vuông kích thước 2k×2k ô, tạo thành lưới ô vuông 2k hàng và 2k cột. Các hàng được đánh số từ 
0 đến 2k-1 từ trên xuống dưới, các cột được 
đánh số từ 0 đến 2k-1 từ trái sang phải. Ô 
nằm trên hàng i và cột j được gọi là ô (i, j). 
Sau buổi trưng bày giới thiệu sản phNm, tấm 
sôcôla được cắt nhỏ, chia cho mọi người, mỗi 
người được một ô của chiếc bánh kỷ lục. Bộ 
phận tiếp thị đã ấn vào hai ô khác nhau (p, q) 
và (u, v) mỗi ô một đồng xu. Vị khách nào 
may mắn nhận được ô sôcôla có đồng xu sẽ 
được tặng rất nhiều sản phNm độc đáo của 
Công ty. 
Vì chiếc bánh rất lớn nên Công ty đã thiết kế một máy cắt bánh. Máy thực hiện dãy các thao tác cắt, 
bắt đầu từ chồng bánh chỉ gồm 1 tấm sôcôla ban đầu, mỗi thao tác gồm hai bước sau: 
• Bước 1: Cắt ngang song song với cạnh chồng bánh chia chồng sôcôla thành hai phần bằng nhau, 
úp chồng bánh bên dưới lên chồng bánh bên trên sao cho mép dưới đè lên mép trên. 
• Bước 2: Cắt dọc song song với cạnh chồng bánh chia chồng sôcôla thành hai phần bằng nhau, úp 
chồng bánh bên trái lên trên chồng bánh bên phải sao cho mép trái đè lên mép phải. 
Như vậy sau mỗi lần thực hiện thao tác cắt, chiều dài và chiều rộng của các tấm sôcôla giảm đi một 
nửa. Sau k lần thực hiện thao tác cắt, các ô của tấm sôcôla sẽ được xếp thành một cột. Khách nhận 
bánh xếp hàng một và được đánh số từ 1 trở đi, người thứ m sẽ nhận được ô sôcôla thứ m từ trên 
xuống dưới (1 ≤ m ≤ 2k×2k). 
Ví dụ, với k = 1 và đồng xu được ấn vào các ô (0, 0), (1, 1), việc thực hiện các thao tác cắt được trình 
bày trên hình vẽ minh hoạ ở trên. Trong ví dụ này, vị khách thứ nhất và thứ ba sẽ là những người nhận 
được tặng phNm của Công ty. 
Yêu cầu: Cho biết các số nguyên k, p, q, u, v. Hãy xác định số thứ tự của hai vị khách may mắn được 
nhận quà. 
Dữ liệu: Vào từ file văn bản GIFTS.INP gồm một dòng chứa 5 số nguyên k, p, q, u, v, các số cách 
nhau bởi dấu cách. 
Kết quả: Đưa ra file văn bản GIFTS.OUT một dòng chứa hai số nguyên là số thứ tự của các vị khách 
may mắn. Hai số phải cách nhau đúng một dấu cách. 
Ví dụ: 
GIFTS.INP GIFTS.OUT 
1 0 0 1 1 1 3 
Ràng buộc: 
• 1 ≤ k ≤ 40, 0 ≤ p, q, u, v ≤ 2k -1; 
• 60% số tests ứng với 60% số điểm của bài có 1 ≤ k ≤ 5. 
 Olympic tin học Việt Nam 
Đề thi vòng II quốc gia 
 Olympic tin học Việt Nam 
Năm 2005 
Bài 1. Lập lịch 
Tại thời điểm 0, cần phải sắp xếp thực hiện n chương trình (đánh số từ 1 đến n) trên máy tính. Chương 
trình i có thời hạn hoàn thành là di và đòi hỏi thời gian thực hiện là pi (di và pi là các số nguyên 
dương). Việc thực hiện chương trình trên máy tính cần được tiến hành liên tục từ thời điểm bắt đầu 
đến đến thời điểm kết thúc. Khoảng thời gian thực hiện hai chương trình bất kỳ không được có nhiều 
hơn một điểm chung (nghĩa là hai khoảng không được giao nhau, ngoại trừ tình huống thời điểm cuối 
của khoảng này là trùng với thời điểm đầu của khoảng kia). Giả sử chương trình i bắt đầu thực hiện từ 
thời điểm si, khi đó fi = si+pi được gọi là thời điểm hoàn thành của nó. Ta nói chương trình i là hoàn 
thành đúng hạn, nếu thời điểm hoàn thành của nó là không lớn hơn di. 
Yêu cầu: Hãy tìm trình tự thực hiện các chương trình sao cho có nhiều chương trình được hoàn thành 
đúng hạn nhất. 
Dữ liệu: Vào từ file văn bản SCHEDULE.INP: 
• Dòng đầu tiên chứa số nguyên dương n (n ≤ 1000); 
• Dòng thứ i trong số n dòng tiếp theo chứa thông tin về chương trình thứ i gồm hai số pi, di 
được ghi cách nhau bởi dấu cách (pi ≤ di ≤ 20000). 
Các số trên cùng dòng được ghi cách nhau bởi ít nhất một dấu cách. 
Kết quả: Ghi ra file văn bản SCHEDULE.OUT số lượng chương trình được hoàn thành đúng hạn theo 
trình tự tìm được. 
Ví dụ: 
SCHEDULE.INP SCHEDULE.OUT 
3 
3 3 
2 4 
2 4 
 2 
 Olympic tin học Việt Nam 
Bài 2. Mạng đen trắng 
Một hệ thống gồm n máy tính (được đánh số từ 1 đến n) được nối với nhau thành mạng bởi các kênh 
nối (cho phép truyền tin hai chiều) giữa một số cặp máy tính. Mạng đã cho là thông suốt, nghĩa là các 
kênh nối đảm bảo hai máy tính bất kỳ có thể truyền tin với nhau qua kênh nối trực tiếp giữa chúng 
hoặc thông qua một số máy trung gian. Các kênh nối giữa các cặp máy chỉ thuộc một trong hai loại 
trắng hoặc đen mà để cho tiện ta sẽ gọi là kênh trắng hoặc kênh đen. Ta gọi một phép rút gọn mạng đã 
cho là một cách loại bỏ khỏi mạng một số nhiều nhất các kênh nối sao cho mạng còn lại vẫn là thông 
suốt. 
Yêu cầu: Trong số các phép rút gọn mạng đã cho hãy tìm cách rút gọn sao cho mạng còn lại có chênh 
lệch giữa số lượng kênh trắng và số lượng kênh đen (trị tuyệt đối của hiệu giữa số lượng kênh trắng và 
kênh đen) là nhỏ nhất. (Nếu có nhiều lời giải thì chỉ cần đưa ra một lời giải tuỳ ý.) 
Dữ liệu: Vào từ file văn bản BWNET.INP: 
• Dòng đầu tiên chứa 2 số nguyên dương n và m, trong đó n là số lượng máy tính còn m là số 
lượng kênh nối trong mạng đã cho (2< n ≤ 200). 
• Mỗi dòng trong số m dòng tiếp theo chứa thông tin về một kênh nối bao gồm 3 số nguyên 
dương u, v, k, cho biết hai máy u, v được nối với nhau bởi kênh nối loại k (k=1 nếu là kênh đen 
và k=2 nếu là kênh trắng). 
Các số trên cùng dòng được ghi cách nhau bởi ít nhất một dấu cách. 
Kết quả: Ghi ra file văn bản BWNET.OUT: 
• Dòng đầu tiên ghi hai số nguyên p, q, trong đó p là số kênh nối còn q là chênh lệch giữa số 
lượng kênh trắng và kênh đen trong mạng tìm được. 
• p dòng tiếp theo mô tả p kênh nối của mạng tìm được theo qui cách giống như trong file dữ 
liệu. 
Ví dụ: 
BWNET.INP BWNET.OUT Sơ đồ nối mạng 
8 12 
1 8 1 
1 2 1 
1 3 1 
2 3 2 
2 4 1 
2 5 2 
2 6 2 
3 5 2 
4 5 2 
5 6 2 
5 7 1 
6 7 2 
 7 1 
3 1 1 
4 5 2 
5 3 2 
6 5 2 
7 6 2 
2 1 1 
8 1 1 
 Olympic tin học Việt Nam 
Bài 3. Biến đổi 
Cho xâu ký tự S độ dài L (L ≤ 20000) chỉ bao gồm các chữ cái la tinh in hoa và các chữ số thập phân. 
Ta gọi đoạn chữ cái là dãy liên tiếp các ký tự chữ cái SM, SM+1, . . ., SM+P-1 trong xâu S thoả mãn điều 
kiện: ký tự đứng trước SM (nếu có) và ký tự đứng sau SM+P-1 (nếu có) phải là chữ số. Tương tự như 
vậy, đoạn chữ số là dãy liên tiếp các ký tự chữ số SN, SN+1, . . ., SN+Q-1 trong xâu S thoả mãn điều kiện: 
ký tự đứng trước SN (nếu có) và ký tự đứng sau SN+Q-1 (nếu có) phải là chữ cái. 
Có 6 phép biến đổi tác động lên S (như là ví dụ lấy S = ‘ABC1234EF5’): 
1. Dịch chuyển vòng tròn các ký tự của S theo chiều kim đồng hồ: Ký tự SL trở thành ký tự đầu 
của xâu: ABC1234EF5  5ABC1234EF. 
2. Dịch chuyển vòng tròn các ký tự của S theo chiều ngược kim đồng hồ: Ký tự S1 trở thành ký tự 
cuối xâu: ABC1234EF5  BC1234EF5A, 
3. Trong một đoạn chữ số tuỳ chọn thay mỗi ký tự số bằng ký tự số kế tiếp theo qui tắc: Ký tự 0 - 
bằng ký tự 1, Ký tự 1 - bằng ký tự 2, . . ., Ký tự 9 - bằng ký tự 0, 
4. Trong một đoạn chữ số tuỳ chọn thay mỗi ký tự số bằng ký tự số đi trước theo qui tắc: Ký tự 1 
- bằng ký tự 0, Ký tự 2 - bằng ký tự 1, . . ., Ký tự 0 - bằng ký tự 9, 
5. Trong một đoạn chữ cái tuỳ chọn thay mỗi ký tự chữ cái bằng ký tự chữ cái đi sau theo qui tắc: 
Ký tự A - bằng ký tự B, Ký tự B - bằng ký tự C, . . ., Ký tự Z - bằng ký tự A, 
6. Trong một đoạn chữ cái tuỳ chọn thay mỗi ký tự chữ cái bằng ký tự chữ cái đi trước theo qui 
tắc: Ký tự B - bằng ký tự A, Ký tự C - bằng ký tự B, . . ., Ký tự A - bằng ký tự Z. 
Yêu cầu: Cho hai xâu S1 và S2 cùng độ dài L, trong đó S2 là kết quả biến đổi S1 bằng cách áp dụng 
một số lần các phép biến đổi nêu trên. Hãy xác định số lượng tối thiểu lần biến đổi để nhận được S2 từ 
S1. 
Dữ liệu: Vào từ file văn bản CHANGE.INP gồm 2 dòng: dòng thứ nhất chứa xâu S1, dòng thứ 2 chứa 
xâu S2. 
Kết quả: Đưa ra file văn bản CHANGE.OUT số lượng tối thiểu lần biến đổi để nhận được S2 từ S1 
Ví dụ: 
CHANGE.INP CHANGE.OUT 
 2 ABC1234EF5 
BC1234EF6A 
 Olympic tin học Việt Nam 
Bài 4. Hái nấm 
Một cô bé đi hái nấm trong N khu rừng đánh số từ 1 đến N. Khu rừng thứ i có Si cây nấm. Việc di 
chuyển từ khu rừng thứ i sang khu rừng thứ j tốn tij đơn vị thời gian. Đến mỗi khu rừng, cô bé có thể 
dừng lại để hái nấm. Nếu tổng số đơn vị thời gian cô bé dừng lại ở khu rừng thứ i là di (di>0), thì cô bé 
hái được: 




++



+



id
iii SSS
2
...
42
cây nấm tại khu rừng đó ( [ ]x là phần nguyên của x). Giả thiết rằng ban đầu cô bé ở khu rừng thứ nhất 
và đi hái nấm trong thời gian không quá P đơn vị. 
Yêu cầu: Hãy tính số lượng cây nấm nhiều nhất mà cô bé có thể hái được. 
Dữ liệu: Vào từ file văn bản HAINAM.INP: 
• Dòng đầu tiên chứa số nguyên dương N (N ≤ 100) và P (P ≤ 1000); 
• Dòng tiếp theo chứa N số nguyên dương Si (Si ≤ 10000); 
• Dòng thứ i trong N dòng cuối cùng chứa N số nguyên dương tij (tij ≤ 1000), (i, j=1, ..., N ). 
Các số trên cùng dòng được ghi cách nhau bởi ít nhất một dấu cách. 
Kết quả: Ghi ra file văn bản HAINAM.OUT số lượng cây nấm nhiều nhất cô bé có thể hái được. 
Ví dụ: 
HAINAM.INP HAINAM.OUT 
2 2 
5 1000 
0 3 
3 0 
 3 
 Olympic tin học Việt Nam 
Bài 5. Đồ họa 3D 
Trong lĩnh vực đồ họa máy tính, các hình khối được biểu diễn qua các đa giác. Trước khi hiển thị các 
đa giác ra card màn hình, cần phải thực hiện một số bước chuNn bị. Hai trong những bước chuNn bị 
quan trọng là: loại bỏ phần nằm ngoài vùng nhìn và tìm ra thứ tự của các hình khối theo vị trí tương 
đối với điểm nhìn. 
 “Vùng nhìn” là một hình chóp cụt có đỉnh tại 
(0,0,0); đáy trên là hình chữ nhật trên mặt phẳng 
z=Z1, với đỉnh trái trên tại (-X1,Y1,Z1), đỉnh phải 
dưới tại (X1,-Y1,Z1); đáy dưới là hình chữ nhật 
trên mặt phẳng z=Z2. 
Với mỗi đa giác cần vẽ, các phần của đa 
giác nằm ngoài “vùng nhìn” sẽ bị loại bỏ để tạo 
thành một đa giác mới nằm hoàn toàn trong “vùng 
nhìn”. Ví dụ ở hình 1, tam giác ABC sau khi loại bỏ 
phần BCDE nằm ngoài “vùng nhìn”, phần còn lại là 
tam giác AED. 
Sau khi các đa giác đã được cắt bỏ phần 
nằm ngoài “vùng nhìn”, chúng phải được sắp xếp lại theo vị trí tương đối với điểm nhìn. Điểm nhìn 
được đặt tại vị trí (0,0,0). Để xác định thứ tự (gần, xa) của hai đa giác ĐG1 và ĐG2, người ta kiểm tra 
các điều kiện: 
• ĐK1: điểm nhìn và đa giác ĐG2 nằm ở hai nửa không gian khác nhau ngăn cách bởi mặt phẳng 
chứa đa giác ĐG1 và không có điểm chung với mặt phẳng chứa ĐG1; hoặc điểm nhìn và đa 
giác ĐG1 nằm ở cùng nửa không gian xác định bởi mặt phẳng chứa đa giác ĐG2 và không có 
điểm chung với mặt phẳng chứa ĐG2. 
• ĐK2: điểm nhìn và đa giác ĐG1 nằm ở hai nửa không gian khác nhau ngăn cách bởi mặt phẳng 
chứa đa giác ĐG2 và không có điểm chung với mặt phẳng chứa ĐG2; hoặc điểm nhìn và đa giác 
ĐG2 nằm ở cùng nửa không gian xác định bởi mặt phẳng chứa đa giác ĐG1 và không có điểm 
chung với mặt phẳng chứa ĐG1. 
Nếu chỉ ĐK1 đúng (đa giác ĐG1 nằm gần điểm nhìn hơn đa giác ĐG2), hoặc chỉ ĐK2 đúng (đa giác 
ĐG2 nằm gần điểm nhìn hơn đa giác ĐG1) thì thứ tự của hai đa giác ĐG1 và ĐG2 có thể xác định được 
(xem ví dụ ở hình 2). Nếu cả ĐK1 và ĐK2 cùng đúng hoặc cùng sai, thứ tự của hai đa giác ĐG1 và 
ĐG2 không thể xác định được (xem ví dụ ở hình 3). 
Yêu cầu: Cho N hình tam giác đánh số từ 1 đến N. Hãy loại bỏ các phần nằm ngoài “vùng nhìn” của 
tam giác này và sau đó sắp xếp lại theo thứ tự ở từ gần đến xa đối với điểm nhìn. 
Dữ liệu: Vào từ file văn bản DOHOA.INP: 
• Dòng đầu tiên chứa số nguyên dương N (N ≤ 100); 
• Dòng tiếp theo chứa 4 số nguyên dương X1 ,Y1, Z1, Z2 (X1, Y1, Z1, Z2 ≤ 10000); 
 Olympic tin học Việt Nam 
• Dòng thứ i trong số N dòng tiếp theo chứa chín số nguyên là tọa độ của ba đỉnh của tam giác 
thứ i (i=1, , N). Các tọa độ có trị tuyệt đối không vượt quá 10000. 
Các số trên cùng dòng được ghi cách nhau bởi ít nhất một dấu cách. 
Kết quả: Ghi ra file văn bản DOHOA.OUT: 
• Nếu có thể xác định được thứ tự giữa mọi cặp hai đa giác được tạo ra từ các tam giác ban đầu 
sau khi loại bỏ phần nằm ngoài vùng nhìn và có thể sắp xếp được các đa giác này theo định 
nghĩa thứ tự đó, hãy ghi ra chỉ số của các đa giác, theo thứ tự từ gần đến xa đối với điểm nhìn. 
• Nếu không, chỉ ghi ra số -1. 
Các số được ghi trên cùng một dòng, cách nhau bởi dấu cách. 
Ví dụ: 
DOHOA.INP DOHOA.OUT 
2 
1 1 1 4 
1 1 2 1 3 2 4 4 2 
1 1 3 1 3 3 3 3 3 
 1 2 
Ghi chú: Một dạng phương trình mặt phẳng: Ax+By+Cz+D=0. Một dạng phương trình đường thẳng: 
x=A1t+A2, y=B1t+B2, z=C1t+C2 trong đó t là một tham số. (x,y,z) là tọa độ các điểm trên mặt 
phẳng/đường thẳng đó, A, B, C, D, A1, A2, B1, B2, C1, C2 là các hằng số. 
 Olympic tin học Việt Nam 
Bài 6. Chia nhóm 
Các trường tổ chức cho N học sinh đi cắm trại. Cần chia các học sinh này thành các nhóm không nhất 
thiết phải có số lượng như nhau, mỗi nhóm một trại. Mỗi nhóm phải có ít nhất một người. Số lượng 
nhóm và số học sinh trong mỗi nhóm sẽ được thông báo cho nhà tài trợ. Dựa trên số liệu này, nhà tài 
trợ sẽ tính toán số lượng tối thiểu chai nước uống để cấp phát sao cho: Mỗi trại đều nhận được số 
lượng chai nước như nhau; Số lượng các chai nước đó có thể chia đều cho các thành viên của mỗi trại. 
Các trường muốn tìm cách chia nhóm sao cho mỗi nhóm nhận được nhiều chai nước nhất. 
Ví dụ: Với N=5, có 7 cách chia nhóm như sau: 
- chia thành năm nhóm: mỗi nhóm có 1 người. Mỗi nhóm nhận được 1 chai nước; 
- chia thành bốn nhóm: ba nhóm mỗi nhóm có 1 người, một nhóm có 2 người. Mỗi nhóm nhận 
được 2 chai nước; 
- chia thành ba nhóm: hai nhóm mỗi nhóm có 1 người, một nhóm có 3 người. Mỗi nhóm nhận 
được 3 chai nước; 
- chia thành ba nhóm: một nhóm có 1 người, hai nhóm mỗi nhóm có 2 người. Mỗi nhóm nhận 
được 2 chai nước; 
- chia thành hai nhóm: một nhóm có 1 người, một nhóm có 4 người. Mỗi nhóm nhận được 4 chai 
nước; 
- chia thành hai nhóm: một nhóm có 2 người, một nhóm có 3 người. Mỗi nhóm nhận được 6 chai 
nước; 
- chia thành một nhóm có 5 người. Mỗi nhóm nhận được 5 chai nước. 
Vậy 6 là số lượng chai nước nhiều nhất mà mỗi nhóm có thể nhận được. 
Yêu cầu: Hãy xác định số lượng chai nước nhiều nhất mà mà mỗi nhóm học sinh có thể nhận được. 
Dữ liệu: Cho 10 giá trị của N: 50, 500,1002, 2003, 3005, 4119, 5555, 9050, 15000, 50000. 
Kết quả: Ghi ra file văn bản CHIANHOM.OUT gồm 10 dòng, mỗi dòng chứa số lượng chai nước 
nhiều nhất tìm được tương ứng với một giá trị của N theo trình tự liệt kê trên. 
Lưu ý: Thí sinh không phải nộp file chương trình mà chỉ nộp file CHIANHOM.OUT 
 Olympic tin học Việt Nam 
Năm 2006 
Bài 1. Phân cụm 
Phân cụm là một bài toán có ý nghĩa ứng dụng quan trọng trong các lĩnh vực như khai phá dữ liệu, thu thập dữ 
liệu và đòi hỏi phân hoạch tập các điểm dữ liệu ra thành các nhóm sao cho các điểm trong cùng một nhóm là 
“gần nhau” và “cách xa” các nhóm khác. Trong bài này chúng ta xét một dạng đơn giản của bài toán phân cụm. 
Cho tập gồm n đối tượng X = {x1, x2, ..., xn}, khoảng cách d(xi, xj) giữa mọi cặp xi ≠ xj và một số nguyên dương k 
(k ≤ n). Giả thiết rằng: d(xi, xj) là các số nguyên dương, d(xi, xj) = d(xj, xi) và d(xi, xi) = 0, với mọi i, j = 1, 2, ..., 
n. Ta gọi một cách phân cụm là một cách phân hoạch tập X ra thành k tập con khác rỗng (mỗi tập con như vậy 
được gọi là một cụm). Cho C = {C1, C2, ..., Ck} là một cách phân cụm, ta gọi độ phân tách của cách phân cụm 
C (ký hiệu là ρ(C )) là giá trị nhỏ nhất trong số các khoảng cách giữa hai phần tử bất kỳ thuộc hai cụm khác 
nhau, nghĩa là 
ρ(C ) = min {d(u,v): u ∈ Cp, v ∈ Cq , p ≠ q }. 
Yêu cầu: Tìm cách phân cụm với độ phân tách là lớn nhất. 
Dữ liệu: Vào từ file văn bản CLUSTER.INP: 
• Dòng đầu tiên chứa hai số nguyên n và k. 
• Dòng thứ i trong số n dòng tiếp theo ghi các số d(xi, x1), d(xi, x2), ..., d(xi, xn), i = 1, 2, ..., n. 
Các số trên cùng một dòng được ghi cách nhau bởi dấu cách. 
Kết quả: Ghi ra file văn bản CLUSTER.OUT độ phân tách của cách phân cụm tìm được. 
Ví dụ: 
CLUSTER.INP CLUSTER.OUT 
4 3 
0 1 2 3 
1 0 2 3 
2 2 0 3 
3 3 3 0 
2 
Hạn chế: 
• Trong tất cả các test: 1 < k ≤ n ≤ 200; d(xi, xj) ≤ 32000, i, j = 1, 2, ..., n. 
• Có 50% số lượng test với n ≤ 100. 
 Olympic tin học Việt Nam 
Bài 2. Các cửa hàng 
Chủ c

File đính kèm:

  • pdftuyen_tap_de_thi_mon_tin_hoc_quoc_gia_2005_2008.pdf
Bài giảng liên quan