You are on page 1of 5

Olympic Tin Học Sinh Viên ĐHBKHN 2017

KHỐI KHÔNG CHUYÊN, 23/9/2017

LƯU Ý

Trong tất cả các bài:

• Dữ liệu vào từ thiết bị vào chuẩn (stdin)

• Kết quả ghi ra thiết bị ra chuẩn (stdout)

• Hạn chế bộ nhớ: 512 MB

Mục lục

KC01. Bàn tròn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2


KC02. Đo tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
KC03. Xóa xâu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
KC04. Vận chuyển . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Trang 1 trên 5
Olympic Tin Học Sinh Viên ĐHBKHN 2017
KHỐI KHÔNG CHUYÊN, 23/9/2017

Bài A. KC01. Bàn tròn

Hôm nay Linh mời khách tới tham dự bữa tiệc sinh nhật của mình. Tham gia bữa tiệc có tất cả n người
bao gồm cả Linh. Mọi người trong bữa tiệc ngồi xung quanh một chiếc bàn lớn gồm đúng n chỗ ngồi.
Linh rất muốn nói chuyện với nhiều khách nhưng không muốn to tiếng làm ảnh hưởng đến cả bàn. Vì
vậy Linh thỉnh thoảng lại nhờ người bên trái hoặc bên phải đổi chỗ ngồi cho mình. Dĩ nhiên tất cả các
khách mời đều sẵn sàng chấp nhận yêu cầu của Linh.
Sau khi tiễn khách về, Linh chợt nhớ ra mình để quên điện thoại ở chỗ cuối cùng mà Linh ngồi. Linh
không nhớ chỗ Linh ngồi cuối cùng ở đâu, nhưng lại nhớ chỗ Linh ngồi đầu tiên và nhớ rằng Linh đã đổi
chỗ đúng k lần với những người bên cạnh.
Bây giờ Linh muốn tính xem có bao nhiêu chỗ ngồi mà cô ấy có khả năng đã ngồi cuối cùng trong bữa
tiệc.
Yêu cầu: Cho biết n và k, hãy giúp Linh xác định số chỗ ngồi mà cô ấy có khả năng đã ngồi cuối cùng
trong bữa tiệc.

Dữ liệu vào
Gồm một dòng chứa hai số nguyên n và k (3 ≤ n ≤ 109 , 0 ≤ k ≤ 109 ).

Kết quả
Ghi ra một số nguyên duy nhất là số lượng chỗ ngồi mà cô ấy có khả năng đã ngồi cuối cùng trong bữa
tiệc.

Ví dụ
test answer
5 2 3
3 3 3

Giải thích
Trong ví dụ đầu tiên, Linh có hai lần đổi chỗ với người bên cạnh. Do đó có thể chỗ ngồi cuối cùng của
Linh là chỗ ban đầu, hoặc là một trong hai vị trí cách chỗ đầu tiên đúng một chỗ ngồi. Trong ví dụ thứ
hai, chỗ ngồi cuối cùng của Linh có thể ở vị trí bất kỳ xung quanh bàn.

Trang 2 trên 5
Olympic Tin Học Sinh Viên ĐHBKHN 2017
KHỐI KHÔNG CHUYÊN, 23/9/2017

Bài B. KC02. Đo tín hiệu

Một thiết bị cảm biến có nhiệm vụ thu nhận dữ liệu về các đối tượng trong 1 khu vực để truyền về cho
trung tâm xử lý. Mỗi đối tượng sẽ được biểu diễn bởi 1 dãy số nguyên dương. Như vậy, cảm biến sẽ truyền
các dãy số về cho trung tâm xử lý. Tuy nhiên, do các đối tượng ở gần nhau và có tín hiệu nhiễu nên một
dãy số gửi về cho trung tâm có thể là dữ liệu của 2 đối tượng. Dãy a1 , ..., an sẽ là dữ liệu của 2 đối tượng
nếu có 1 vị trí i (1 < i < n) sao cho max1 − ai ≥ b và max2 − ai ≥ b với max1 = max{a1 , . . . , ai−1 },
max2 = max{ai+1 , . . . , an }, và b là hằng số cho trước (xem minh hoạ trong Hình 1). Khi phát hiện một
dãy số a1 , ..., an là dữ liệu của 2 đối tượng thì cần phải tiến hành cắt dãy số đó thành 2 dãy, mỗi dãy là dữ
liệu của một đối tượng. Khi đó vị trí cắt sẽ là vị trí i sao cho max{a1 , . . . , ai−1 }−ai +max{ai+1 , . . . , an }−ai
đạt giá trị lớn nhất (giá trị đó gọi là độ đo cắt tín hiệu).

Hình 1: Minh hoạ dữ liệu biểu diễn 2 đối tượng

Ví dụ: với giá trị b = 5 thì dãy số 3, 5, 4, 7, 2, 5, 4, 6, 9, 8 là dữ liệu của 2 đối tượng vì tìm thấy vị trí
i = 5 tại đó max{3, 5, 4, 7} − 2 ≥ 5 và max{5, 4, 6, 9, 8} − 2 ≥ 5 và vị trí i = 5 cũng chính là vị trí cắt.
Yêu cầu: cho trước giá trị n, b và dãy số nguyên dương a1 , . . . , an . Hãy lập trình kiểm tra xem dãy số
a1 , . . . , an có phải là dữ liệu biểu diễn 2 đối tượng hay không và tính độ đo cắt tín hiệu nếu câu trả lời
là có.

Dữ liệu vào
Dữ liệu đầu vào bao gồm các dòng sau:

• Dòng thứ nhất chứa 2 số nguyên dương n và b (3 ≤ n ≤ 200000, 1 ≤ b ≤ 50)

• Dòng thứ 2 chứa n tự nhiên a1 , . . . , an

Kết quả
Ghi ra độ đo cắt tín hiệu nếu dãy đầu vào là dữ liệu biểu diễn 2 đối tượng và giá trị -1 nếu ngược lại.

Ví dụ
test answer
10 5 12
3 5 4 7 2 5 4 6 9 8

Trang 3 trên 5
Olympic Tin Học Sinh Viên ĐHBKHN 2017
KHỐI KHÔNG CHUYÊN, 23/9/2017

Bài C. KC03. Xóa xâu

Cho xâu ký tự S chỉ gồm các chữ cái latin in thường. Mỗi lần thực hiện, bạn được phép xóa một hoặc
một dãy ký tự liên tiếp giống nhau khỏi xâu. Đối với xâu thu được sau khi ta lại có thể thực hiện phép
xóa nói trên. Quá trình sẽ được tiếp tục như vậy cho đến khi thu được xâu rỗng.
Ví dụ: Cho xâu S = “aabbbacaa”, ta có thể thực hiện xóa như sau (ở mỗi bước các ký tự được gạch dưới
sẽ được xóa để thu được xâu tiếp theo):
aabbbacaa → aabbbcaa → aacaa → caa → aa → “”
Cách xóa này đòi hỏi 5 lần thực hiện phép xóa. Cách xóa sau đây đòi hỏi 3 lần thực hiện xóa:
aabbbacaa → aabbbaaa → aaaaa → “”
Yêu cầu: Hãy xác định cách xóa đòi hỏi ít lần thực hiện phép xóa nhất.

Dữ liệu vào

• Dòng đầu tiên chứa số nguyên n là độ dài của xâu S (1 ≤ n ≤ 1000);

• Dòng thứ hai chứa xâu S gồm n ký tự, mỗi ký tự chỉ là chữ cái latin in thường (từ ‘a’ đến ‘z’).

Kết quả
Ghi ra môt số nguyên là số phép xóa ít nhất cần thực hiện để xóa được tất cả các ký tự của xâu đã cho.

Ví dụ
test answer
9 3
aabbbacaa

Trang 4 trên 5
Olympic Tin Học Sinh Viên ĐHBKHN 2017
KHỐI KHÔNG CHUYÊN, 23/9/2017

Bài D. KC04. Vận chuyển

Chuyển phát hàng là một công việc quan trọng trong thương mại điện tử là lĩnh vực phát triển bùng nổ
trong thời gian hiện nay. Ta xét công việc của một nhân viên giao hàng của Công ty XYZ chuyên bán
hàng trên mạng. Nhân viên giao hàng cần phát các kiện hàng (được đóng gói trong các hộp cùng kích
thước) đến các khách hàng có địa chỉ trên một đại lộ có dạng một đường thẳng.
Nhân viên giao hàng sẽ nhận các kiện hàng tại trụ sở công ty ở vị trí x = 0, và cần chuyển phát hàng
đến n khách hàng, được đánh số từ 1 đến n. Biết xi và mi là vị trí của khách hàng i và số lượng kiện
hàng cần chuyển cho khách hàng này. Do các kiện hàng là khá cồng kềnh nên mỗi lần đi chuyển phát
nhân viên giao hàng chỉ có thể mang theo không quá k kiện hàng.
Nhân viên giao hàng xuất phát từ trụ sở, nhận một số (không quá k) kiện hàng và di chuyển theo đại
lộ để chuyển phát cho một số khách hàng. Khi giao hết các kiện hàng mang theo, nhân viên giao hàng
lại quay trở về trụ sở và lặp lại công việc nói trên cho đến khi chuyển phát được tất cả các kiện hàng
cho khách hàng. Sau khi kết thúc công việc chuyển phát, nhân viên phải quay trở lại trụ sở công ty để
nộp cho phòng kế toán tất cả các hóa đơn giao nhận có ký nhận của khách hàng. Giả thiết là: tốc độ di
chuyển của nhân viên là 1 đơn vị khoảng cách trên một đơn vị thời gian. Thời gian nhận hàng ở trụ sở
công ty và thời gian bàn giao hàng cho khách hàng được coi là bằng 0.
Yêu cầu: Giả sử thời điểm mà nhân viên giao hàng bắt đầu công việc là 0. Hãy giúp nhân viên giao
hàng tìm cách hoàn thành công việc đã mô tả ở trên tại thời điểm sớm nhất.

Dữ liệu vào

• Dòng đầu tiên chứa hai số nguyên dương được ghi cách nhau bởi dấu cách n và k (n ≤ 1000; k ≤ 107 ).

• Dòng thứ i trong số n dòng tiếp theo chứa hai số nguyên được ghi cách nhau bởi dấu cách xi
(|xi | ≤ 107 ) và mi (1 ≤ mi ≤ 107 ).

Kết quả
Ghi ra một số nguyên là thời điểm sớm nhất mà người giao hàng có thể hoàn thành nhiệm vụ của mình.

Ví dụ
test answer
4 10 42
-7 5
-2 3
5 7
9 5
7 1 1358000000000000
9400000 10000000
9500000 10000000
9600000 10000000
9700000 10000000
9800000 10000000
9900000 10000000
10000000 10000000

Trang 5 trên 5

You might also like