You are on page 1of 8

BÀI TOÁN TÌM KIẾM

CAM SÀNH HÀM YÊN ......................................................................................................................... 1


TÌM KIẾM NHỊ PHÂN (BSEARCH.*) .............................................................................................. 2
ĐẾM CẶP (DANCE.*) ........................................................................................................................... 3
THI NẤU ĂN (COOKING.*) ................................................................................................................ 3
TÁCH DÃY ............................................................................................................................................... 4
THU HOẠCH SỮA ................................................................................................................................. 5
CHƠI BÓNG CHÀY ................................................................................................................................ 5
CƯA MÁY ................................................................................................................................................. 6
DÃY SỐ (DAYSO.*) ............................................................................................................................... 7
TRUNG TÂM BỒI DƯỠNG TÀI NĂNG....................................................................................... 7

CAM SÀNH HÀM YÊN


Nhân dịp Trại hè Hùng Vương năm nay tổ chức tại tỉnh
Tuyên Quang, được biết ở huyện Hàm Yên có loại cam
sành rất nổi tiếng nên các đoàn cùng nhau đến thăm nông
trang trồng cam sành của gia đình ông Nghiệp. Nông trang
trồng cam nhà ông được trồng trên núi cao, khí hậu mát
mẻ và được tưới bằng nước nguồn từ đỉnh núi nên cam có
vị ngọt mát và giá trị dinh dưỡng cao.

Trong các đoàn đến tham quan có N người muốn mua cam. Do mọi người muốn nhường
nhau nên mỗi người chỉ mua một quả, người thứ i cho biết sẵn sàng trả pi(đồng) cho một
quả cam.

Ông Nghiệp quyết định lựa chọn đưa ra một mức giá cố định là 𝑘 (đồng) cho mỗi quả cam
trong vườn. Vì rất thích tính cách hào phóng của khách nên ông sẽ bán với giá 𝑘 cho tất
cả những người sẵn sàng trả giá lớn hơn 𝑘. Ngoài ra, nếu có những người trả giá đúng
bằng 𝑘, ông chỉ bán duy nhất cho một người khách đến sớm nhất.

Tuy hiếu khách nhưng vì miếng cơm manh áo nên ông Nghiệp vẫn muốn thu được số tiền
nhiều nhất có thế. Hãy giúp ông Nghiệp lựa chọn mức giá là một số nguyên 𝑘 để có thể
thu được nhiều tiền nhất từ việc bán cam cho 𝑁 vị khách nói trên. Biết số cam trong vườn
đảm bảo đủ cho tất cả khách tới thăm.

Dữ liệu: vào từ file văn bản ORANGE.INP có cấu trúc như sau:

• Dòng đầu chứa số nguyên dương N là số lượng khách muốn mua cam;
• Dòng sau ghi N số nguyên dương 𝑝1 , 𝑝2 , … , 𝑝𝑁 (𝑝𝑖 ≤ 106 ) mỗi số cách nhau bởi một
dấu cách.
Kết quả: Ghi ra file văn bản ORANGE.OUT một số nguyên duy nhất là số tiền nhiều nhất
mà ông Nghiệp có thể thu được.

Ví dụ:

ORANGE.INP ORANGE.OUT
4 8
1 2 5 4

Ràng buộc:

• Có 30% số test ứng với 30% số điểm của bài có 𝑁, 𝑝𝑖 ≤ 1000, 𝑝𝑖 ≠ 𝑝𝑗 ∀𝑖 ≠ 𝑗;


• Có 30% số test khác ứng với 30% số điểm của bài có 𝑁 ≤ 1000, 𝑝𝑖 ≠ 𝑝𝑗 ∀𝑖 ≠ 𝑗;
• Có 20% số test khác ứng với 20% số điểm của bài có 𝑁 ≤ 105 , 𝑝𝑖 ≠ 𝑝𝑗 ∀𝑖 ≠ 𝑗;
• Có 20% số test còn lại ứng với 20% số điểm của bài có 𝑁 ≤ 105 .

TÌM KIẾM NHỊ PHÂN (BSEARCH.*)


Cho dãy số nguyên gồm 𝑛 số 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ). Và 𝑘 câu hỏi dạng: cho số 𝑣, hỏi 𝑣 có xuất
hiện trong dãy đã cho?
Dữ liệu: Vào từ file văn bản BSEARCH.INP gồm:
• Dòng đầu tiên là hai số 𝑛, 𝑘 (𝑛, 𝑘 ≤ 105 ).
• Dòng tiếp theo chứa 𝑛 số 𝑎1 , 𝑎2 , … , 𝑎𝑛 (𝑎𝑖 ≤ 109 ).
• 𝑘 dòng tiếp theo, mỗi dòng ghi một số 𝑣.
Kết quả: Ghi ra file văn bản BSEARCH.OUT gồm 𝑘 dòng tương ứng với 𝑘 giá trị 𝑣 đã cho bạn
cần ghi ra YES/NO tương ứng với 𝑣 có xuất hiện trong dãy đã cho hay không?
BSEARCH.INP BSEARCH.OUT
5 4 YES
1 6 4 2 5 NO
1 YES
7 YES
4
2

ĐẾM CẶP (DANCE.*)


Trung thu sắp đến, Cuội đang muốn gây ấn tượng với chị Hằng nên nảy ra ý tưởng sẽ tổ chức
đêm hội trăng rằm thật hoành tráng. Và màn ấn tượng nhất của đêm hội là các bạn sẽ mời
nhau cùng khiêu vũ (đương nhiên, Cuội sẽ mời chị Hằng khiêu vũ cùng mình ☺). Tuy nhiên,
để các cặp đôi khi ghép được hoàn hảo, Cuội yêu cầu hai bạn chỉ ghép thành cặp khi độ cao
chênh lệch đúng bằng 𝑘 (cho trước).
Biết rằng sẽ có 𝑛 bạn tham gia đêm hội trăng rằm (tính cả Cuội và chị Hằng) – để cho tiện, các
bạn này sẽ được đánh số từ 1 đến 𝑛 và chiều cao tương ứng của mỗi bạn lần lượt là
𝑎1 , 𝑎2 , … , 𝑎𝑛 (các giá trị này là hoàn toàn phân biệt). Bạn hãy tính xem có bao nhiêu cách sắp
xếp từng cặp đôi với nhau thỏa mãn yêu cầu của Cuội?
Dữ liệu: Vào từ file văn bản DANCE.INP
• Dòng đầu tiên là hai số 𝑛, 𝑘 (𝑛 ≤ 105 , 𝑘 ≤ 109 ).
• Dòng tiếp theo gồm 𝑛 số nguyên dương 𝑎1 , 𝑎2 , … , 𝑎𝑛 (𝑎𝑖 ≤ 109 ) là chiều cao của 𝑛 bạn
tham gia đêm hội
Kết quả: Ghi ra file văn bản DANCE.OUT gồm 1 số duy nhất là số cặp lớn nhất có thể sắp xếp
thỏa mãn yêu cầu của Cuội.
Ví dụ:
DANCE.INP DANCE.OUT Giải thích
6 2 3 Các cặp có thể ghép để độ cao đúng bằng 2 là:
1 3 2 4 9 5 (1, 3), (2, 4), (3, 5)

THI NẤU ĂN (COOKING.*)


Có n bạn sinh viên đang tham gia dự thi nấu ăn nhân dịp năm mới và được đánh số báo danh
từ 1 đến n, bạn sinh viên thứ i tham dự với số lượng là ai món ăn. Ban tổ chức sẽ đánh số các
món ăn dự thi như sau: các món ăn của thí sinh thứ nhất đánh số từ 1 đến 𝑎1 , các món ăn của
thí sinh thứ hai đánh số từ 𝑎1 + 1 đến 𝑎1 + 𝑎2 . . .. và tương tự như vậy cho đến món cuối cùng.
Sau khi chấm thi, Ban tổ chức chọn trao giải cho 𝑚 món ăn với các số hiệu là 𝑝1 , 𝑝2 , . . . , 𝑝𝑚 .
Hãy cho biết các món ăn đoạt giải đó thuộc về các bạn sinh viên nào?
Dữ liệu: Vào từ file văn bản COOKING.INP
• Dòng thứ nhất gồm hai số nguyên 𝑛 , 𝑚 (1 ≤ 𝑛 ≤ 105 , 𝑚 ≤ 104 ) là số thí sinh tham
gia dự thi.
• Dòng thứ hai là n số nguyên 𝑎1 , 𝑎2 , . . . , 𝑎𝑛 (1 ≤ 𝑎𝑖 ≤ 104 ) là số lượng món ăn của
từng thí sinh, mỗi số cách nhau một khoảng trắng.
• Dòng tiếp theo là m số nguyên 𝑝1 , 𝑝2 , . . . , 𝑝𝑚 là số hiệu của 𝑚 món ăn đoạt giải, mỗi số
cách nhau một khoảng trắng.
Kết quả: Ghi ra file văn bản COOKING.OUT gồm 𝑚 số nguyên 𝑠1 , 𝑠2 , . . . , 𝑠𝑚 cho biết số báo
danh thí sinh của từng món ăn đạt giải (món ăn 𝑝𝑖 là của thí sinh số báo danh 𝑠𝑖 ), mỗi số
cách nhau một khoảng trắng.
Ví dụ:
COOKING.INP COOKING.OUT
5 3 1 2 4
5 4 1 2 3
5 6 12

TÁCH DÃY
Cho một dãy A gồm 𝑛 số nguyên 𝑎1 , 𝑎2 , . 𝑎𝑛 ,.
Một dãy B gọi là dãy con của dãy A nếu ta có thể xóa đi một số phần tử của A để thu được B.
Ví dụ: A = (1, 4, 2, 6, 7, 3, 5, 9), khi đó B = (1, 5, 9) hay B = (4, 7, 3, 5) là các dãy con của A
nhưng B = (2, 4, 5) hay B = (6, 3, 10, 9) không là dãy con của A.
B là dãy con không giảm của A nếu dãy con này gồm các phần tử được sắp theo thứ tự
không giảm.
Yêu cầu: Hãy tìm cách chia dãy 𝐴thành một số ít nhất các dãy con không giảm.
Ví dụ: với N = 5 và dãy {1, 4, 3, 5, 3}, ta có thể chia thành hai dãy {1, 3, 3} và {4, 5}.
Dữ liệu: Vào từ file văn bản SEQ.INP
• Dòng đầu tiên ghi số nguyên dương 𝑁 (𝑁 ≤ 106 ).
• Dòng thứ hai ghi N số tự nhiên mô tả dãy 𝑎1 , 𝑎2 , … , 𝑎𝑛 , |𝑎𝑖 | ≤ 109
Kết quả: Ghi vào file văn bản SEQ.OUT Gồm 1 dòng duy nhất ghi số nguyên dương k là số
dãy con trong phép phân tích tìm được.
Ví dụ:
SEQ.INP SEQ.OUT
10 5
5 3 6 5 5 6 4 3 7 2
THU HOẠCH SỮA
Bác John có 𝑛 con bò đang trong thời gian cho thu hoạch sữa. Thời gian này, các con bò
được chăm sóc đặc biệt kĩ lưỡng sao cho lượng sữa chúng sản sinh hằng ngày là lớn nhất có
thể. Tuy nhiên, các con bò này lại rất nhạy cảm với thời tiết. Con bò thứ 𝑖 sẽ cảm thấy thoải
mái nhất khi nhiệt độ nơi chúng ở trong khoảng [𝑎𝑖 … 𝑏𝑖 ]. Vì thế, nếu nhiệt độ dưới 𝑎𝑖 chúng
sẽ sản sinh một lượng sữa là X, nếu nhiệt độ tốt nhất trong vùng [𝑎𝑖 . . 𝑏𝑖 ] chúng sẽ cho lượng
sữa là Y và nếu nhiệt độ lớn hơn 𝑏𝑖 chúng sẽ cho lượng sữa là 𝑍 (tất nhiên 𝑌 > 𝑋, 𝑌 > 𝑍).
Yêu cầu: Cho biết 𝑛, 𝑋, 𝑌, 𝑍 và vùng nhiệt độ yêu thích của mỗi con bò. Hãy tính tổng lượng
sữa nhiều nhất có thể thu hoạch được nếu nhiệt độ được điều chỉnh tối ưu nhất có thể?
Dữ liệu: Vào từ file văn bản MILK.INP
• Dòng đầu tiên là 4 số 𝑛, 𝑋, 𝑌, 𝑍 (𝑛 ≤ 20000, 0 < 𝑋, 𝑌, 𝑍 ≤ 1000).
• n dòng tiếp theo, dòng thứ i gồm hai số 𝑎𝑖 và 𝑏𝑖 (𝑎𝑖 , 𝑏𝑖 ≤ 109 ).
Kết quả: ghi ra file văn bản MILK.OUT gồm 1 số duy nhất là tổng lượng sữa lớn nhất bác
John có thể thu hoạch được.
Ví dụ:
MILK.INP MILK.OUT Giải thích
4 7 9 6 31 Khi điều chỉnh nhiệt độ phòng
5 8 là 7 hoặc 8 độ, con bò 1 và 4
3 4 sẽ cho lượng sữa là 9, con bò
13 20 2 cho lượng sữa là 7, con thứ
7 10 3 cho lượng sữa là 6. Tổng
lượng sữa: 9 + 9 + 7 + 6 =
31.

CHƠI BÓNG CHÀY


Để chuẩn bị cho đợt thi đấu bóng chày giao hữu giữa các trường, huấn luyện viên đội
SuperStar đang chuẩn bị cho các cầu thủ luyện tập bài tập đầu tiên: kĩ thuật ném bóng. Ông
yêu cầu các cầu thủ đứng thành một hàng. Có thể coi các cầu thủ đang đứng trên một trục
tọa độ, cầu thủ thứ 𝑖 đứng ở vị trí 𝑎𝑖 (vị trí các cầu thủ là hoàn toàn phân biệt).Trong quá
trình quan sát các cầu thủ luyện tập ông nhận thấy rằng: cứ mỗi nhóm 3 cầu thủ (giả sử có
số hiệu là X, Y và Z) ném bóng sẽ cho ra các đường chuyền hoàn hảo nếu:
• Lần ném bóng thứ nhất: Cầu thủ X sẽ ném bóng cho cầu thủ Y (ở bên phải của X),
khoảng cách chuyền bóng là 𝑎𝑌 − 𝑎𝑋
• Lần ném bóng thứ hai: Cầu thủ Y sẽ ném bóng cho cầu thủ Z (ở bên phải của Y), khoảng
cách chuyền bóng là 𝑎𝑍 − 𝑎𝑌 , khoảng cách này phải xa ít nhất là bằng nhưng không xa
quá hai lần khoảng cách của lần ném bóng thứ nhất.
Yêu cầu: Hãy giúp huấn luyện viên đếm xem có tất cả bao nhiêu nhóm như vậy?
Dữ liệu: vào từ file văn bản BASEBALL.INP
 Dòng đầu là số nguyên dương 𝑛 (3 ≤ 𝑛 ≤ 1000). là số lượng thành viên tham gia
buổi tập.
 𝑛 dòng tiếp theo, dòng thứ 𝑖 là số nguyên dương 𝑎𝑖 chỉ vị trí của cầu thủ thứ
𝑖 (0 ≤ 𝑎𝑖 ≤ 109 ).
Kết quả: ghi ra file văn bản BASEBALL.OUT gồm một số duy nhất là số cách chia cầu thủ
thành cách nhóm
Ví dụ:
BASEBALL.INP BASEBALL.OUT Giải thích
5 4 Có 4 cách ghép nhóm, mỗi
3 nhóm 3 cầu thủ ở các vị trí:
1 1-3-7, 1-4-7, 4-7-10, và 1-
10 4-10.
7
4

CƯA MÁY
Một hàng cây gồm 𝑛 cây đánh số từ 1 tới 𝑛, cây thứ 𝑖 có chiều cao ℎ𝑖 . Người ta muốn khai thác gỗ từ
những cây này bằng một máy cưa. Máy cưa vận hành như sau: Trước hết phải thiết lập một độ cao 𝛥
cho lưỡi cưa, sau đó di chuyển máy cưa qua hàng cây. Mỗi khi máy cưa đi qua cây độ cao ℎ > 𝛥 thì
cây đó bị cưa còn lại chiều cao Δ và người ta lấy được ℎ−Δ mét gỗ từ cây này. Dĩ nhiên những cây có
độ cao ≤ Δ không bị cưa và người ta không lấy được gỗ từ những cây đó.
Yêu cầu: Cho dãy số nguyên dương 𝑚1 , 𝑚2 , … 𝑚𝑘 . Với mỗi giá trị 𝑚𝑗, tìm số nguyên 𝛥𝑗 lớn nhất sao
cho nếu đặt độ cao của lưỡi cưa là 𝛥𝑗 thì tổng số mét gỗ khai thác được không ít hơn 𝑚𝑗 (𝑗 =
1, 2, … , 𝑘).
Dữ liệu: Vào từ file văn bản SAW.INP
Dòng 1 chứa hai số nguyên dương 𝑛, 𝑘 ≤ 105
Dòng 2 chứa 𝑛 số nguyên dương ℎ1 , ℎ2 , … ℎ𝑛 (∀𝑖: ℎ𝑖 ≤ 106 ).
Dòng 3 chứa 𝑘 số nguyên dương 𝑚1 , 𝑚2 , … , 𝑚𝑘 . (∀𝑗: 𝑚𝑗 ≤ ∑𝑛𝑖=1 ℎ𝑖 )

Kết quả: Ghi ra file văn bản SAW.OUT một dòng 𝑘 số nguyên Δ1,Δ2,…,Δ𝑘 tìm được.
Các số trên một dòng của input/output files được/phải ghi cách nhau ít nhất một dấu cách
Ví dụ:

SAW.INP SAW.OUT
4 2 15 16
20 15 10 17
7 4
Giải thích:
Nếu đặt độ cao lưỡi cưa là 15, ta khai thác được 7m gỗ: 5m từ cây 1 và 2m từ cây 3
Nếu đặt độ cao lưỡi cưa là 16, ta khai thác được 5m gỗ: 4m từ cây 1 và 1m từ cây 3.
DÃY SỐ (DAYSO.*)
Cho dãy số gồm 𝑛 (1 ≤ 𝑛 ≤ 105 ) số nguyên
𝑎1 , 𝑎2 , . . . , 𝑎𝑛
trong đó |𝑎𝑖 | ≤ 2. 109 , 𝑖 = 1, 2, . . . , 𝑛 và một số nguyên 𝑘 (|𝑘| ≤ 109 ).
Yêu cầu: Hãy xác định xem trong dãy số đã cho có tìm được hai số mà hiệu của chúng là
bằng k hay không?
Dữ liệu: Vào từ file văn bản DAYSO.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 chứa số hạng ai, i = 1, 2, ..., n.
Kết quả: Ghi ra file văn bản DAYSO.OUT:
• Dòng đầu tiên ghi ‘YES’ nếu câu trả lời là khẳng định, ghi ‘NO’ nếu câu trả lời là phủ
định;
• Nếu dòng thứ nhất ghi ‘YES’ thì dòng thứ hai ghi tiếp hai chỉ số p, q của hai số hạng
của dãy số đã cho thoả mãn điều kiện đặt ra. (Chỉ cần đưa ra một lời giải)
Hai số liên tiếp trên cùng dòng được ghi cách nhau bởi dấu cách.
Ví dụ:
DAYSO.INP DAYSO.OUT DAYSO.INP DAYSO.OUT
7 8 YES 4 -3 NO
1 1 7 2
3 1
5 1
9 3
3
7
9

TRUNG TÂM BỒI DƯỠNG TÀI NĂNG


Đất nước VN có 𝑛 thành phố, tất cả nằm dọc theo một con đường cao tốc. Trung tâm
thành phố thứ 𝑖 có khoảng cách đến vị trí bắt đầu con đường cao tốc là 𝑑𝑖 (𝑖 = 1,2, . . , 𝑛).
Với những thành tích vang dội của các đoàn Olympic nước VN vừa đạt được trên đấu
trường quốc tế, chính phủ muốn thành lập một trung tâm bồi dưỡng tài năng. Một vấn đề
quan trọng đang được xem xét đó là lựa chọn vị trí để xây dựng trung tâm. Nếu trung tâm
được đặt ở vị trí có khoảng cách tính từ vị trí bắt đầu con đường cao tốc là 𝑝 thì mức độ
phù hợp được tính bằng:
𝑛

∑ 𝑤𝑖 × |𝑑𝑖 − 𝑝|
𝑖=1

trong đó 𝑤𝑖 là mức độ ưu tiên của thành phố thứ 𝑖.

Hiện tại, chính phủ đang đánh giá 𝑚 đề xuất xây dựng trung tâm tại các vị trí 𝑝1 , 𝑝2 , … , 𝑝𝑚 .

Yêu cầu: Cho các số nguyên dương 𝑑1 , 𝑑2 , . . , 𝑑𝑛 ,𝑤1 , 𝑤2 , . . , 𝑤𝑛 và 𝑚 đề xuất vị trí xây dựng
trung tâm 𝑝1 , 𝑝2 , … , 𝑝𝑚 , với mỗi đề xuất hãy tính mức độ phù hợp.

Dữ liệu: Vào từ file văn bản TALENT.INP theo khuôn dạng:

• Dòng đầu tiên chứa hai số nguyên dương 𝑛, 𝑚;


• Dòng thứ hai chứa 𝑛 số nguyên dương 𝑑1 , 𝑑2 , . . , 𝑑𝑛 (0 < 𝑑𝑖 ≤ 106 );
• Dòng thứ ba chứa 𝑛 số nguyên dương 𝑤1 , 𝑤2 , . . , 𝑤𝑛 (0 < 𝑤𝑖 ≤ 103 );
• Dòng thứ 𝑘 trong 𝑚 dòng tiếp theo chứa một số nguyên dương 𝑝𝑘 mô tả cho đề
xuất thứ 𝑘 (0 < 𝑝𝑘 ≤ 106 ; 𝑘 = 1,2, … , 𝑚).
Kết quả: Ghi ra file văn bản TALENT.OUT gồm 𝑚 dòng (mỗi dòng tương ứng với một đề
xuất), dòng thứ 𝑘 là giá trị phù hợp cho đề xuất thứ 𝑘.

Ví dụ:

TALENT.INP TALENT.OUT TALENT.INP TALENT.OUT


3 2 3 4 2 13
1 2 4 5 1 2 3 2 5
1 2 1 1 2 4 1
2 4
3 2

Ràng buộc:

• Có 30% số test ứng với 30% số điểm của bài có 𝑛 ≤ 10; 𝑚 = 1; 𝑑𝑖 ≤ 1000;
• Có 30% test khác ứng với 30% số điểm của bài có có 𝑛 ≤ 105 ; 𝑚 ≤ 10;
• Có 20% test khác ứng với 20% số điểm của bài có có 𝑛 ≤ 105 ; 𝑚 ≤ 105 ; 𝑤𝑖 = 1;
• Có 20% số test còn lại ứng với 20% số điểm của bài có 𝑛 ≤ 105 ; 𝑚 ≤ 105 .

You might also like