ĐỀ THI HỌC SINH GIỎI
NĂM HỌC 2005 − 2006
Môn : TIN HỌC
Thời gian làm bài : 180 phút
Ngày thi thứ nhất : 14 tháng 11 năm 2005
TỔNG QUAN BÀI THI
Tên bài Tên chương trình File dữ liệu vào File kết quả
BÀI 1 Chuỗi tam giác TG.PAS TG.INP TG.OUT
BÀI 2 Dãy cân bằng DAYCB.PAS DAYCB.INP DAYCB.OUT
BÀI 3 Biến đổi dãy số BDDAY.PAS BDDAY.INP BDDAY.OUT
Bài 1. Chuỗi tam giác
Trên mặt phẳng cho N tam giác ( 1 ≤ N ≤ 5 000). Các tam giác không có cạnh nào giao nhau
(hoặc nằm lồng nhau hoặc không có điểm chung).
Yêu cầu : Hãy viết chương trình tìm chuỗi dài nhất các tam giác lồng nhau trong số N tam giác
đã cho trên.
Dữ liệu vào : Cho trong file văn bản TG.INP có nội dung như sau:
• Dòng đầu chứa số N
• Mỗi dòng trong N dòng tiếp theo chứa 6 số nguyên x
1
, y
1
, x
2
, y
2
, x
3
, y
3
, là tọa độ của các
đỉnh tam giác tương ứng.
Các số trên cùng một dòng cách nhau bởi khoảng trống.
Kết quả xuất ra file văn bản TG.OUT chứa một số duy nhất là số lượng tam giác lồng nhau
nhiều nhất tìm được.
Ví dụ :
TG.INP TG.OUT
3
0 0 1 1 1 0
-1 -1 0 -2 -2 0
3 0 0 3 3 3
1
TG.INP TG.OUT
4
0 0 100 0 0 100
-100 -100 0 -200 -200 0
3 3 3 10 10 3
1 1 1 50 50 1
3
Trang 1/2
Đại Học Quốc Gia TP. HCM
TRƯỜNG PHỔ THÔNG NĂNG KHIẾU
Bài 2. Dãy cân bằng
Một dãy nhị phân gồm 2N chữ số 0, 1 ( 1 ≤ N ≤ 100) được gọi là dãy cân bằng khi số lượng số
0 và số 1 bằng nhau và bằng đúng N. Ví dụ, 1000101101 là một dãy cân bằng với N = 5. Với
một giá trị cụ thể của N, ta có một tập hợp T
N
các dãy cân bằng dài 2N chữ số. Số lượng phần
tử thuộc T
N
có thể rất lớn vì vậy việc liệt kê tất cả các chuỗi thuộc T
N
là không khả thi. Ta có
thể xem mỗi phần tử của T
N
là một số trong hệ nhị phân gồm 2N chữ số. Giả sử T
N
có K phần
tử. Để thuận lợi cho việc xử lý, người ta xếp các dãy số thuộc T
N
theo thứ tự tăng dần của giá
trị. Dãy đầu tiên (nhỏ nhất) được đánh số là 0 và chuỗi cuối cùng (lớn nhất) được đánh số là K-
1. Ví dụ, khi N = 2, ta có K = 6 và các dãy tương ứng thuộc T
2
là (theo thứ tự từ 0 đến 5) 0011,
0101, 0110, 1001, 1010 và 1100.
Yêu cầu : Cho N và một số I, hãy cho biết dãy có số thứ tự I trong tập T
N
.
Dữ liệu vào : Cho trong file văn bản DAYCB.INP chứa 2 số N và I nằm trên cùng một dòng.
Các số cách nhau bởi khoảng trống.
Kết quả ra : Ghi vào file văn bản DAYCB.OUT chứa dãy tương ứng tìm được hoặc số -1
(trong trường hợp I < 0 hoặc I ≥ K).
Ví dụ :
DAYCB.INP DAYCB.OUT
2 2 0110
Bài 3 : Biến đổi dãy số
Cho một dãy A gồm N số nguyên A
1
, A
2
, …, A
N
, trong đó mỗI phần tử có giá trị tuyệt đối
không vượt quá 10000. Người ta cho phép biến đổi dãy bằng thao tác sau: Chọn một số phần tử
của dãy hiện thời và tăng các phần tử đã chọn lên 1 đơn vị. Dãy số mới nhận được nếu có các
phần tử giống nhau thì xoá các phần tử giống nhau đó đi và chỉ giữ lại 1 phần tử .
Yêu cầu : Cho dãy A và số K. Hãy tìm dãy kết quả nhận được sau khi thực hiện K thao tác với
số phần tử M của dãy là nhỏ nhất.
Dữ liệu vào : Từ trong file văn bản BDDAY.INP trong đó :
• Dòng đầu chứa hai số N và K (1≤N≤10 000, 0≤K≤1 000 000)
• Dòng thứ 2 chứa các số A
1
, A
2
, …, A
N
.
Kết quả ra : Ghi vào file văn bản BDDAY.OUT số M tìm được.
Ví dụ :
BDDAY.INP BDDAY.OUT
5 3
1 7 15 9 6
3
Trang 2/2