You are on page 1of 6

Đại học Sư Phạm Hà Nội CSP MARATHON 2023

Trường THPT Chuyên


Tuần 4 (Ngày 09/09/2023)
Thời gian 210 phút
TỔNG QUAN VỀ ĐỀ BÀI
STT Tên file bài làm Tên file dữ liệu Tên file kết quả Giới hạn mỗi test Điểm
1 RESEARCH.* RESEARCH.INP RESEARCH.OUT 2 giây / 1 GiB 100
3 BKLR.* BKLR.INP BKLR.OUT 1 giây / 1 GiB 75
4 LOVESTORY.* LOVESTORY.INP LOVESTORY.OUT 2 giây / 1 GiB 75
5 CHOCO.* CHOCO.INP CHOCO.OUT 1 giây / 1 GiB 50
Dấu * được thay bằng PAS hay CPP tùy theo ngôn ngữ lập trình được sử dụng là Pascal hay C++

Hãy lập chương trình giải các bài toán sau đây

BÀI 1. VẼ BIỂU ĐỒ
Huy là một kỹ sư tài năng, hiện anh đang thực hiện một nghiên cứu mới của mình và cần phải thực hiện
vẽ biểu đồ cột, biểu đồ này của Huy rất đặc biệt bởi các cột của chúng nằm liền sát nhau và không có
khoảng cách. Vì vậy Huy quyết định sẽ vẽ biểu đồ trên tấm giấy kẻ ô (Caro Paper) kích thước 109 × 𝑛
của mình.

Ví dụ về Caro Paper và Biểu đồ cột mà Huy cần vẽ


Cụ thể hơn, biểu đồ mà Huy cần vẽ có 𝑛 cột, cột thứ 𝑖 có độ cao là ℎ𝑖 ; người giỏi thường lười, Huy cũng
không phải là ngoại lệ, anh muốn vẽ nên biểu đồ thật nhanh, vì vậy Huy sẽ chỉ thực hiện liên tục thao tác:
- Chọn một số ô liên tiếp trên một hàng và tô màu các ô đó
Vì dành quá nhiều thời gian cho việc nghiên cứu, Huy đã làm bạn nữ (giấu tên) cảm thấy buồn; cô quyết
định nhân lúc Huy đi vắng sẽ sửa chiều cao của một số cột để anh làm việc thật nhanh và có thời gian
quan tâm mình. Để Huy không nhận ra không ảnh hưởng quá nhiều tới kết quả nghiên cứu, bạn gái ấy
sẽ chỉ sửa độ cao của không quá 𝑘 cột.
Yêu cầu: Bạn hãy giúp bạn nữ (giấu tên) sửa lại chiều cao của các cột sao cho số thao tác mà Huy thực
hiện là ít nhất nhé.
Dữ liệu: Vào từ file văn bản RESEARCH.INP:

Trang 1
- Dòng đầu tiên chứa hai số nguyên 𝑛, 𝑘 (0 ≤ 𝑘 ≤ 𝑛 ≤ 2000) là số cột của biểu đồ và số cột tối đa
bạn nữ sẽ sửa
- Dòng thứ hai chứa 𝑛 số nguyên không âm ℎ1 , ℎ2 , … , ℎ𝑛 (ℎ𝑖 ≤ 109 ) là độ cao ban đầu của 𝑛 cột

Kết quả: Xuất ra file văn bản RESEARCH.OUT:


- Một số nguyên duy nhất là số thao tác nhất Huy sẽ phải thực hiện trong cách sửa tối ưu tìm được

Ràng buộc:
- Có 25% số điểm của bài thỏa mãn 𝑘 = 0
- Có 25% số điểm khác với ℎ1 ≤ ℎ2 ≤ ⋯ ≤ ℎ𝑛
- Có 25% số điểm khác có 𝑛 ≤ 500
- Còn lại không có điều kiện gì thêm
Ví dụ:
RESEARCH.INP RESEARCH.OUT Giải thích:
4 1 3 Đổi ℎ2 thành 3, cần 3 lần tô màu:
1 2 3 4 - Tô hàng 1 của tất cả cá cột
- Tô hàng 2 từ cột 2 tới cột 4
- Tô hàng 3 từ cột 3 tới cột 4
6 2 7 Đổi ℎ3 thành 2 và ℎ6 thành 6, ta mất 7 lần
1 2 1 9 6 8 tô màu

BÀI 2. BÍ KÍP LUYỆN RỒNG


Sau vài trận vác flo vào đánh rank, điểm uy tín của Tâm đã xuống dưới 80 và không được đánh rank nữa.
Quá buồn chán, Tâm quyết định tiến tới vương quốc Bình Dương Vô Tận để học bí kíp múa flo.
Vương quốc gồm 𝑛 thành phố và 𝑚 con đường hai chiều, đường đi thứ 𝑖 nối hai thành pố 𝑢𝑖 và 𝑣𝑖 , lượng
mana giảm xuống nếu đi qua con đường này là 𝑤𝑖 . Ngoài ra, ở mỗi thành phố có một cổng dịch chuyển
với mana để đi vào hoặc đi ra là 𝑎𝑖 ; tức là ta có thể dùng cổng dịch chuyển để đi từ thành phố 𝑢 tới thành
phố 𝑣 với chi phí (𝑎𝑢 + 𝑎𝑣 ) % 𝑘.
Hiện tại Tâm đang ở thành phố 𝑆 và anh muốn tới thành phố 𝑇 để lấy cuốn bí kíp được đặt tại thành phố
đó. Anh muốn tìm một lộ trình tốn ít mana nhất có thể.
Yêu cầu: Bạn hãy giúp Tâm lấy được quyển bí kíp mà mất ít mana nhất.
Dữ liệu: Vào từ file văn bản BKLR.INP:
- Dòng đầu tiên chứa ba số nguyên dương 𝑛, 𝑚, 𝑘(𝑛, 𝑚 ≤ 2 × 105 , 𝑘 ≤ 109 ) là số thành phố và số
con đường tại Bình Dương Vô Tận
- 𝑚 dòng tiếp, dòng thứ 𝑖 chứa ba số nguyên dương 𝑢𝑖 , 𝑣𝑖 , 𝑤𝑖 (𝑢𝑖 , 𝑣𝑖 ≤ 𝑛, 𝑢𝑖 ≠ 𝑣𝑖 , 𝑤𝑖 ≤ 109 ) mô tả
một con đường tại Bình Dương Vô Tận
- Dòng tiếp theo chứa 𝑛 số nguyên dương 𝑎1 , 𝑎2 , … , 𝑎𝑛 (𝑎𝑖 < 𝑘) cho biết lượng mana để qua cổng
dịch chuyển tại các thành phố
- Dòng cuối cùng chứa hai số nguyên dương 𝑆, 𝑇 (𝑆, 𝑇 ≤ 𝑛, 𝑆 ≠ 𝑇) cho biết thành phố nơi Tâm
đứng và thành phố nơi đặt cuốn bí kíp

Kết quả: Xuất ra file văn bản BKLR.OUT:


- Một số nguyên duy nhất là lượng mana cần bỏ ra để Tâm có thể tới được thành phố 𝑇

Trang 2
Ràng buộc:
- Có 30% số điểm của bài với 𝑛, 𝑚 ≤ 2000
- Có 30% số điểm khác có 𝑘 = 109 , 𝑚 = 𝑛 − 1, 𝑎𝑖 ≤ 106 với mọi 𝑖 và từ một thành phố bất kì có
thể đi tới mọi thành phố khác
- Còn lại không có điều kiện gì thêm
Ví dụ:
BKLR.INP BKLR.OUT Giải thích:
5 5 7 4 Lộ trình của Tâm như
1 2 3 sau:
1 3 2 - Đi từ 1 → 4
3 4 3 bằng cổng dịch
chuyển
4 5 2 - Đi từ 4 → 5
1 5 6 bằng đường đi
4 4 1 5 1 thông thường
1 5

BÀI 3. CÂU CHUYỆN TÌNH YÊU


Thành phố nơi Tiến (và người yêu) ở 𝑁 địa điểm được nối với nhau bởi 𝑁 − 1 con đường, tại mỗi địa
điểm cắm một tấm biển ghi lại độ cao của địa điểm đó. Từ 1 địa có đường đi tới bất kì một địa điểm khác.
Ngày hôm ấy, Tiến đến đón người yêu mình đi chơi và trên đường đi, anh thấy các tấm biển đánh dấu độ
cao nên liền nghĩ ra một trò chơi để chơi cùng người ấy. Trò chơi có luật như sau:
Giả sử nhà Tiến ở địa điểm 𝑢 và nhà người ấy ở địa điểm 𝑣. Đầu tiên Tiến chọn một số nguyên dương 𝑋,
trên đường đi ngắn nhất từ địa điểm 𝑢 đến 𝑣, Tiến và người ấy xét các địa điểm với độ cao lớn hơn hoặc
bằng 𝑋. Từ tập các địa điểm được xét, mỗi người đi tới một địa điểm theo lượt, bắt đầu từ người yêu
Tiến; người này chọn xong sẽ tới lượt người còn lại, ai không thể tìm được một địa điểm để tới sẽ thua.
Các địa điểm được chọn cần phải thỏa mãn:
- Địa điểm ấy chưa được đi tới bởi cả hai người
- Địa điểm ấy có độ cao không thấp hơn các địa điểm đã được đến bởi một trong hai người
Được biết đến rộng rãi với biệt danh “Tiến Bịp”, luật chơi của Tiến khiến anh luôn áp đảo và làm người
ấy giận dỗi. Cô gái bỏ mặc Tiến và tìm đến bạn để tâm sự về sự ích kỉ của Tiến. Bạn mong muốn giúp đỡ
cô gái nên cho cô ấy biết giá trị 𝑋 nhỏ nhất so cho Tiến luôn thắng (Giả sử cả hai người cùng chơi tối ưu).
Vì đang dỗi Tiến nên cô chuyển nhà liên tục, Tiến cũng chuyển nhà để chạy theo tình yêu, do đó sẽ có 𝑄
câu hỏi mà người yêu Tiến sẽ hỏi bạn. Mỗi câu hỏi gồm hai số 𝑢, 𝑣 cho biết vị trí nhà của Tiến và của cô
gái ấy, vì thời gian không quay trở lại nên các câu hỏi của Tiến có thể coi như đã được mã hóa dựa vào
số 𝐾 cho trước (Cách mã hóa xem bên dưỡi).

Yêu cầu: Bạn hãy trả lời 𝑄 câu hỏi được đặt ra nhé.
Dữ liệu: Vào từ file văn bản LOVESTORY.INP:
- Dòng đầu tiên gồm ba số nguyên 𝑁, 𝑄, 𝐾 (1 ≤ 𝑁, 𝑄 ≤ 105 , 0 ≤ 𝐾 < 2) là số địa điểm, số câu hỏi
của Tiến và số dùng để mã hóa các câu hỏi
- Dòng tiếp theo gồm 𝑁 số nguyên dương 𝑎1 , 𝑎2 , … , 𝑎𝑛 (1 ≤ 𝑎𝑖 ≤ 109 ∀ 1 ≤ 𝑖 ≤ 𝑁) tương ứng là
độ cao của các địa điểm

Trang 3
- 𝑁 − 1 dòng tiếp theo, mỗi dòng gồm hai số nguyên 𝑢, 𝑣 (1 ≤ 𝑢, 𝑣 ≤ 𝑁) là môt tả một đường đi
nối giữa hai địa điểm
- 𝑄 dòng tiếp theo, mỗi dòng gồm hai số 𝑢, 𝑣 (1 ≤ 𝑢 ≤ 𝑣 ≤ 𝑁) mô tả một câu hỏi đã được mã hóa;
để giải mã hãy làm theo các bước dưới đây:
o Gọi 𝑎𝑛𝑠 là câu trả lời của câu hỏi trước đó (𝑎𝑛𝑠 = 0 nếu đây là câu hỏi đầu tiên)
o 𝑢′ = (𝑢 + 𝑎𝑛𝑠 × 𝐾) % 𝑛 + 1
o 𝑣 ′ = (𝑣 + 𝑎𝑛𝑠 × 𝐾) % 𝑛 + 1
o Khi đó 𝑢′ , 𝑣′ chính là nội dung của câu hỏi
Kết quả: Xuất ra file văn bản LOVESTORY.OUT:
- Gồm 𝑄 dòng, mỗi dòng gồm một số nguyên dương 𝑋 là đáp án thỏa mãn câu hỏi tương ứng. Nếu
Tiến luôn thắng trong một câu hỏi thì in ra 1.
Ràng buộc:
- Có 20% số điểm thỏa mãn 𝑁 ≤ 3000.
- Có 20% số điểm khác có tất cả các biển đều có giá trị bằng nhau.
- Có 30% số điểm khác với 𝐾 = 0
- Còn lại không có giới hạn gì thêm.

Ví dụ:
LOVESTORY.INP LOVESTORY.OUT Giải thích:
6 3 0 4 Ở câu hỏi đầu tiên, đường đi từ
3 1 2 1 2 3 4 1 → 3 có 2 số: 2, 3. Nếu 𝑥 ≤ 3
1 2 1 thì người ấy chọn 3 là thắng,
1 3 nên đáp án phải là 4
2 4
2 5 Ở câu hỏi thứ 3, Tiến luôn
4 6 thắng với mọi 𝑥 nên đáp án là
1 3 1.
2 3
2 4
6 3 1 1 No comments
3 1 2 1 2 3 3
1 2 4
1 3
2 4
2 5
4 6
1 3
2 3
2 4

BÀI 4. SÔ CÔ LA
Nam và Duy là bộ đôi song sát của trường mầm non SuperKids, hai bạn có thể nói là kẻ tám cân người
nửa lạng, không ai thua ai. Hôm nay, hai bạn được Giáo sư X thưởng 𝑘 tảng Sô cô la; mỗi một trong 𝑘
tảng Sô cô la này có hình chữ nhật được chia thành nhiều miếng sô cô la bé hơn (Gọi là các viên).

Trang 4
Mô tả những miếng sô cô la mà Giáo sư X thưởng cho hai bạn
Nam và Duy quyết định sẽ không chia sẻ với mọi người ăn chia “công bằng”. Cụ thể, giả sử các hàng của
các tảng sô cô la đánh số bắt đầu bởi 1 từ trên xuống dưới, các cột của các tảng sô cô la đánh số bắt đầu
bởi 1 từ trái sang phải; hai bạn sẽ ăn theo lượt, bạn nào đến lượt sẽ:
- Chọn một viên sô cô la nằm trên hàng 𝑖 và cột 𝑗 của miếng Socola nào đó (Viên sô cô la này phải
chưa được ăn bởi một trong hai bạn)
- Ăn toàn bộ các viên sô cô la nằm trên hàng 𝑥, cột 𝑦 thỏa mãn 𝑥 ≤ 𝑖, 𝑦 ≤ 𝑗 ở tảng sô cô la đó (Nếu
như viên này chưa được ăn)
Tuy nhiên, trong văn hóa của người Việt Nam, chúng ta không nên động đến miếng cuối; nói một cách
nôm na thì miếng cuối của mỗi mảng sô cô la là miếng liêm sỉ, bạn nào ăn sẽ bị trêu đến hết đời. Và dĩ
nhiên, không bạn nào muốn mình bất đắc dĩ phải ăn miếng cuối cùng cả.
Sau khi bàn bạc, hai bạn quyết định Nam sẽ là người ăn trước; các bạn trong lớp dù không được chia Sô
cô la nhưng cũng rất muốn biết ai là người sẽ bị trêu đến cuối đời.
Yêu cầu: Bạn hãy cho biết ai là người ăn miếng liêm sỉ nhé.
Dữ liệu: Vào từ file văn bản CHOCO.INP:
- Dòng đầu tiên chứa số nguyên dương 𝑡 (𝑡 ≤ 105 ) là số bộ dữ liệu, 𝑡 nhóm dòng sau, mỗi nhóm
dòng bao gồm:
o Dòng đầu tiên chứa số nguyên dương 𝑘 (𝑘 ≤ 105 ) là số tảng Sô cô la
o 𝑘 dòng tiếp, mỗi dòng chứa hai số nguyên dương 𝑚, 𝑛 (𝑚, 𝑛 ≤ 10) mô tả kích thước của
tảng Sô cô la

Dữ liệu đảm bảo tổng 𝑘 trong mọi bộ dữ liệu không vượt quá 105

Kết quả: Xuất ra file văn bản CHOCO.OUT:


- 𝑡 dòng, mỗi dòng chứa tên của người bị trêu đến hết đời trong bộ dữ liệu tương ứng:
o Nếu Nam là người bị trêu, đưa ra NAM
o Nếu Duy là người bị trêu, đưa ra DUY

Ràng buộc:
- Có 20% số điểm của bài thỏa mãn 𝑘 = 1
- Có 20% số điểm khác của bài có 𝑚 = 1 với mọi miếng sô cô la
- Có 30% số điểm khác của bài với 𝑚, 𝑛 ≤ 4 trong mọi bộ dữ liệu
- Còn lại không có điều kiện gì thêm
Trang 5
Ví dụ:
CHOCO.INP CHOCO.OUT
4 NAM
1 DUY
1 1 NAM
1 DUY
1 5
2
1 3
3 1
2
2 3
3 4

 HẾT 

Trang 6

You might also like