đây là đề thi rất hay cho các bạn yêu thích môn tin đây là đề thi rất hay cho các bạn yêu thích môn tin đây là đề thi rất hay cho các bạn yêu thích môn tin đây là đề thi rất hay cho các bạn yêu thích môn tin đây là đề thi rất hay cho các bạn yêu thích môn tin đây là đề thi rất hay cho các bạn yêu thích môn tin đây là đề thi rất hay cho các bạn yêu thích môn tin
Trang 1OLYMPIC TIN HỌC SINH VIấN LẦN THỨ XV, 2006
Khối thi: Đồng đội chuyờn
Thời gian làm bài: 180 phỳt
Ngày thi: 07-05-2006
Nơi thi:
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Tên bài Tên file
chơng trình
Tên file dữ liệu Hạn chế thời gian
Biến đổi bảng số TABLE.* TABLE.INP 5s
Những chiếc cọc STICKS.* STICKS.INP 2s
Nộp chơng trình nguồn Kết quả xuất ra luồng output chuẩn (màn
hình) Ngoài kết quả thí sinh không đợc ghi bất cứ thông tin thêm.
Hãy lập trình giải các bài sau đây:
Trong kỳ thi vấn đỏp học sinh phải trả lời cỏc cõu hỏi của thầy giỏo Nếu trả lời đỳng, thầy
giỏo đỏnh dấu bằng ký tự ‘C’ (Correct), nếu sai thỡ đỏnh dấu ‘N’ (No Correct) Khi học sinh
trả lời đỳng, thầy sẽ đưa ra cõu hỏi tiếp theo khú hơn cõu trước, cũn khi trả lời sai thầy sẽ cho
cõu hỏi mới dễ hơn Sau khi thi xong, kết quả của mỗi học sinh là một xõu cỏc ký tự ‘C’ và
‘N’ Điểm số của học sinh sẽ được tớnh như sau: Với cỏc cõu trả lời sai học sinh khụng được
điểm, với mỗi cõu trả lời đỳng học sinh nhận được điểm bằng số lần trả lời đỳng liờn tiếp từ
cõu trả lời này trở về trước Vớ dụ, nếu kết quả là ‘CCNNCNNCCC’, thỡ điểm số sẽ là
1+2+0+1+0+0+1+2+3 = 10
Yờu cầu: Cho xõu kết quả độ dài khụng quỏ 1000, hóy tớnh điểm của học sinh.
Dữ liệu: Vào từ file văn bản SCORE.INP:
• Dũng đầu tiờn chứa số nguyờn T - số lượng Tests,
• Mỗi dũng trong T dũng sau chứa một xõu kết quả thi.
Kết quả: Đưa ra luồng output chuẩn, gồm T dũng, dũng thứ i chứa kết quả tương ứng với
Tests thứ i (1≤i≤T).
Vớ dụ:
SCORE.INP Kết quả 5
CCNNCNNCCC
CCNNCCNNCC
CNCNCNCNCNCNCN
CCCCCCCCCC
CCCCNCCCCNCCCCN
10 9 7 55 30
Trang 2Bài 2: BIẾN ĐỔI BẢNG SỐ Tên chương trình: TABLE.*
Cho một lưới ô vuông gồm n dòng và n cột Các dòng được đánh số từ 1 đến n từ trên xuống dưới, các cột được đánh số từ 1 đến n từ trái qua phải Ô nằm ở vị trí dòng i và cột j của lưới được gọi là ô (i,j) Trên lưới đã cho, khoảng cách từ ô (i,j) tới ô (p,q) được tính bằng:
i-p+j-q.Tại ô (i,j) của lưới ghi số nguyên không âm a ij , i = 1, 2, , n ; j = 1, 2, , n Với mỗi
ô (i,j) gọi s ij là khoảng cách ngắn nhất từ ô (i,j) đến một ô khác 0 Một ô (i,j) chứa số 0 được gọi là ô thay thế nếu tồn tại duy nhất 1 ô (p,q) thoả:
a pq > 0,
Khoảng cách từ ô (i, j) tới ô (p, q) bằng s ij
Yêu cầu: Tính số lượng ô thay thế trên lưới.
Dữ liệu : Vào từ file văn bản TABLE.INP, gồm nhiều Tests:
• Dòng đầu tiên chứa số nguyên T - số lượng Tests (1 ≤ T ≤ 10),
• Tiếp theo là T nhóm dòng đưa ra thông tin về các Tests, trong mỗi nhóm:
o Dòng đầu tiên ghi số nguyên dương n (n≤200).
o Dòng thứ i trong số n dòng tiếp theo ghi n số nguyên dương a i1 , a i2 , , a in là
các số trên dòng thứ i của lưới, i = 1, 2, , n; a ij≤1000000
Hai số liên tiếp trên cùng một dòng được ghi cách nhau bởi một dấu cách.
Kết quả: Đưa ra luồng output chuẩn, gồm T dòng, dòng thứ i chứa kết quả tương ứng với
Tests thứ i (1≤i≤T)
Ví dụ:
TABLE.INP Kết quả 1
3
0 0 0
1 0 2
0 0 0
4
Cho một dãy A gồm N số nguyên Dãy A có thể được biểu diễn dưới dạng một xâu S theo các
quy tắc sau:
• Loại bỏ các phần tử trùng nhau trong dãy chỉ giữ lại một phần tử đại diện,
• Các số còn lại được sắp xếp theo thứ tự tăng dần,
• Lần lượt liệt kê các số tách nhau bởi dấu phẩy và một dấu cách sau dấu phẩy
• Dãy các số nguyên liên tiếp từ a tới b (a<b) có thể biểu diễn thành dạng "a, …, b"
Ví dụ: Với dãy A: 1 3 5 -10 3 4 6 2 7 10 9 8 10 3 10 10 ta có biểu diễn S="-10, 1, , 10" Có thể có nhiều cách biểu diễn khác thoả các điều kiện trên, nhưng xâu S trên có độ dài ngắn nhất
Yêu cầu: Cho một dãy A gồm n số nguyên Tìm xâu biểu diễn S có độ dài ngắn nhất.
Dữ liệu: Vào từ file văn bản LIST.INP: Gồm nhiều Tests:
• Dòng đầu tiên chứa số nguyên T - số lượng Tests (1 ≤ T ≤ 10),
• Tiếp theo là T nhóm dòng đưa ra thông tin về các Tests, với mỗi nhóm dòng:
o Dòng đầu tiên chứa số nguyên n ( 1 ≤ n ≤ 1 000),
Trang 3o Dòng thứ 2 chứa n số nguyên, các số không nhất thiết phải khác nhau và có giá trị
tuyệt đối không vượt quá 2*109
Hai số liên tiếp trên cùng một dòng được ghi cách bởi ít nhất một dấu cách.
Kết quả: Đưa ra luồng output chuẩn, gồm T dòng, mỗi dòng chứa kết quả biểu diễn rút gọn
Dòng thứ i chứa kết quả tương ứng với Tests thứ i (1≤i≤ T)
Ví dụ:
2
7
1 3 5 -1 3 4 6
16
1 3 5 -10 3 4 6 2 7 10 9 8 11 13 12 14
-1, 1, 3, , 6 -10, 1, , 14
Để dựng lều cho các đội tuyển tham dự kỳ thi Đồng đội, Ban tổ chức Olimpic Sinh viên mua
N cây tre được đánh số từ 1 tới N với độ dài tương ứng là: h 1 , h 2 , , h N Qua việc đăng ký dự
thi của các đội Ban tổ chức nhận thấy để làm đủ cho mỗi đội một lều cần phải có K cọc với
độ dài bằng nhau và để tiện cho việc cưa độ dài của cọc là số nguyên Mỗi chiếc cọc được cắt
ra từ một cây nào đó và không được phép nối từ một số đoạn Để các lều được thoáng mát Ban tổ chức mong muốn độ dài của cọc là lớn nhất
Yêu cầu: Cho N, h 1 , h 2 , , h N và K Hãy tìm độ dài nguyên d lớn nhất của cọc
Dữ liệu : Vào từ file văn bản STICKS.INP, gồm nhiều Test:
• Dòng đầu tiên chứa số nguyên T - số lượng Tests (1 ≤ T ≤10),
• Tiếp theo là T nhóm dòng đưa ra thông tin về các Tests, với mỗi nhóm:
o Dòng đầu chứa 2 số nguyên dương N và K (1≤N ≤10000, 1≤K ≤ 10000),
o Dòng thứ 2 ghi N số nguyên h 1 , h 2 , , h N (0<h i≤1000000, 1≤i≤N).
Hai số liên tiếp trên cùng một dòng được ghi cách bởi ít nhất một dấu cách.
Kết quả: Đưa ra luồng output chuẩn, gồm T dòng, dòng thứ i chứa kết quả tương ứng với
Tests thứ i (1≤i≤ T)
Ví dụ:
STICKS.INP Kết quả 1
2 4
130 270
90
Trên mặt phẳng toạ độ cho một đường gấp khúc khép kín không tự cắt gồm N đỉnh với toạ độ
nguyên Các đỉnh của đường gấp khúc được đánh số liên tiếp từ 1 tới N, trong đó đỉnh thứ i nối với đỉnh thứ i+1 (1≤i≤N-1) còn đỉnh thứ N nối với
đỉnh 1 Đỉnh thứ i có toạ độ (x i , y i)
Yêu cầu: Tính số các điểm với toạ độ nguyên nằm trên
đường gấp khúc
Dữ liệu : Vào từ file văn bản POINTS.INP, gồm nhiều
Tests:
• Dòng đầu tiên chứa số nguyên T - số lượng Tests
(1 ≤ T ≤ 10),
• Tiếp theo là T nhóm dòng đưa ra thông tin về các
Tests, với mỗi nhóm dòng:
o Dòng đầu chứa số N (3≤N≤10 000),
o Dòng thứ i trong N dòng tiếp theo chứa 2 số x i và y i (-1 000 000≤x i , y i≤1 000 000).
Trang 4Hai số liên tiếp trên cùng một dòng được ghi cách nhau bởi một khoảng trắng.
Kết quả: Đưa ra luồng output chuẩn, gồm T dòng, dòng thứ i chứa kết quả tương ứng với
Tests thứ i (1≤i≤ T)
Ví dụ:
POINT.INP Kết quả 1
6
-1 1
2 8
8 8
12 4
10 -2
7 -3
18
Trên hành tinh Delta có N quốc gia Các quốc gia được đánh số từ 1 tới N Mỗi quốc gia đều
còn có một số vấn đề bất đồng với không quá 3 quốc gia khác Để duy trì sự cân bằng, hoà bình trong hành tinh, người ta thành lập một tổ chức với tên gọi là Hội quốc liên Sắp tới sẽ diễn ra một kỳ họp Đại hội đồng của tổ chức này Vì số lượng Quốc gia quá nhiều nên Ban tổ chức Đại hội muốn phân các quốc gia này thành hai nhóm để họp vào hai thời điểm khác nhau sao cho trong mỗi nhóm mỗi quốc gia có không quá 1 quốc gia bất đồng với mình
Yêu cầu: Hãy giúp Ban tổ chức phân các Quốc gia thành hai nhóm thỏa mãn yêu cầu trên.
Dữ liệu : Vào từ file văn bản HQL.INP, gồm nhiều Tests:
• Dòng đầu tiên chứa số nguyên T - số lượng Tests (1 ≤ T ≤ 10),
• Tiếp theo là T nhóm dòng đưa ra thông tin về các Tests, với mỗi nhóm dòng:
o Dòng đầu chứa số N là số lượng quốc gia trên hành tinh Delta (1≤N≤8000)
o Dòng thứ i trong N dòng tiếp theo chứa các không quá 4 số: số đầu là số lượng các quốc gia có bất đồng với quốc gia thứ i, tiếp theo là chỉ số của các quốc gia
đó Nếu quốc gia thứ i không bất đồng với bất kỳ một quốc gia nào thì dòng thứ i
chứa duy nhất một số 0
Kết quả: Ghi ra luồng output chuẩn kết quả của T Tests, với mỗi một nhóm dòng:
Số -1 nếu không tồn tại phương án phân thành hai nhóm Trong trường hợp có phương án phân nhóm hãy ghi ra hai dòng:
• Dòng đầu chứa chỉ số các quốc gia trong nhóm thứ nhất
• Dòng thứ 2 chứa chỉ số các quốc gia thuộc nhóm thứ 2
Hai số liên tiếp trên cùng một dòng được ghi cách bởi ít nhất một dấu cách
Ví dụ:
HQL.INP Kết quả 1
7
3 2 3 4
3 1 3 6
2 1 2
2 1 5
1 4
1 2 0
1 4 6 7
2 3 5