| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Magellan Contest #01 - Bài A - Eo biển Magellan | 20 (p) | 1.0s | 256M |
| 2 | Magellan Contest #01 - Bài B - Khẩu phần tử | 20 (p) | 1.0s | 256M |
| 3 | Magellan Contest #01 - Bài C - Huyết chiến Mactan | 20 (p) | 1.0s | 256M |
| 4 | Magellan Contest #01 - Bài D - Vĩ tuyến tử thần | 20 (p) | 1.0s | 256M |
| 5 | Magellan Contest #01 - Bài E - Drama có hồi kết | 20 (p) | 1.0s | 256M |
Vào tháng 10 năm 1520. Sau hơn một năm ròng rã lênh đênh trên Đại Tây Dương đầy sóng gió và những cuộc nổi loạn đẫm máu, hạm đội của Magellan cuối cùng cũng tìm thấy một lối đi hẹp ở cực nam châu Mỹ. Nơi này sau này sẽ được thế giới đặt tên là Eo biển Magellan.
Nhưng thiên nhiên không dễ dàng đầu hàng. Eo biển này là một mê cung đầy đá ngầm, sương mù dày đặc và những cơn gió thù nghịch. Trích nhật ký hành trình của Antonio Pigafetta:
Đêm nay, Đại tướng Magellan gọi tôi vào phòng thuyền trưởng. Gương mặt ông hằn rõ những vết chân chim của sự mỏi mệt nhưng đôi mắt thì rực lửa. Ông chỉ tay vào tấm bản đồ da dê cũ kỹ, nơi đánh dấu eo biển dài đúng \(D\) hải lý.
Magellan bảo rằng:
Cánh buồm của chúng ta chỉ chịu được sức gió để tiến tối đa \(X\) hải lý mỗi ngày. Đáng sợ là dòng hải lưu ở đây dịch chuyển theo chu kỳ của trăng. Cứ ta đi ròng rã được \(K\) ngày, thì đến ngày tiếp theo, gió từ Nam Cực sẽ thổi thốc ngược lại, đẩy lùi chiến thuyền về sau \(Y\) hải lý. Thủy thủ đoàn đã kiệt quệ, lương thực chỉ còn tính bằng ngày. Ta cần biết chính xác mất bao nhiêu ngày để con tàu cuối cùng thoát khỏi cái eo biển quỷ quái này. Nếu tính sai, tất cả sẽ làm mồi cho cá.
Là hoa tiêu trưởng của chuyến đi, bạn hãy tính toán số ngày tối thiểu để hạm đội vượt qua eo biển này.
______
/|_||_\`.__
( _ _ _\
~~~~~~~`-(_)--(_)-'~~~~~~~~~~~~~~~~~~
-1Test 1
16 5 3 2
5
Chu kỳ là \(3\) ngày tiến, \(1\) ngày lùi.
Test 2
324 234 211 124
2
. . ___ .
/| /| / \ /|
/ |/ | | | / |
/__|__| \___/ /__|__
/_______| /_______|
/\_______/\ /\_______/\
/ \ / \
-------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ ] [ ] [ ] [ ] [ ] <-- Khoang chứa thùng nước
_|_|_|_|_|_|_|_|_|_|_
| _ _ _ _ _ |
| | | | | | | | | | | |
|_|_|_|_|_|_|_|_|_|_|_|
Test 1
5
1 3 5 8 10
3
\(1+3+5 = 9 = 3^2\) (thỏa mãn)
\(3+5+8 = 16 = 4^2\) (thỏa mãn)
\(1+5+10 = 16 = 4^2\) (thỏa mãn)
Tổng cộng: \(3\) bộ.
Test 2
10
23 35 13 1498 202 247 322 5375 2921 2425
2
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/ \ / \ / \
___/________\_____/________\_____/________\___
| |
| [ TRINIDAD ] [ CONCEPCION ] [ VICTORIA ]
|______________________________________________|
\ /
~~~~~~~~~~~~~~~~~~~~\~~~~~~~~~~~~/~~~~~~~~~~~~~~~~~~~~
~ ~ ~ \ (Tử Địa) / ~ ~ ~
~ ~ \_________/ ~ ~
Bình minh ngày 27 tháng 4 năm 1521, eo biển Mactan rực lửa.
Họ đông như kiến, tiếng gầm rú của họ làm rung chuyển cả mặt nước bẩn thỉu. Khi đại bác của chúng ta câm lặng ngoài khơi vì mắc cạn, tôi biết lưỡi hái của tử thần đã chạm đến cổ.
— Trích hồi ký của Antonio Pigafetta, thư ký đoàn viễn chinh.
Lời cảnh báo của Raja Humabon về sự nguy hiểm của tộc trưởng Lapulapu đã bị Ferdinand Magellan gạt đi trong sự kiêu ngạo tột cùng. Magellan tin rằng giáp sắt Toledo và súng hỏa mai Tây Ban Nha có thể đè bẹp bất kỳ thế lực bản địa nào. Nhưng eo biển Mactan không phải là một bãi chiến trường thông thường; đó là một tử địa san hô. Thủy triều rút nhanh một cách kỳ lạ vào rạng sáng đã bỏ lại các chiến hạm viễn chinh khổng lồ nằm phơi bụng cách bờ hơn một dặm. Pháo hạm hoàn toàn bất lực.
Dưới làn mưa lao tre tẩm độc và đá nhọn trút xuống từ các bụi rậm ngập mặn, Magellan đã ngã xuống sau khi bị một mũi tên độc găm trúng chân trái. Cái chết của vị tổng tư lệnh vĩ đại khiến hạm đội Tây Ban Nha rơi vào hoảng loạn cực độ. Quyền chỉ huy tạm thời được trao lại cho Duarte Barbosa và João Serrão. Để bảo toàn những thủy thủ còn sống sót trên 3 con tàu Trinidad, Concepcion và Victoria, họ buộc phải thiết lập một phòng tuyến rút lui chiến lược xuyên qua cụm \(N\) đảo đá và bãi cát ngầm quanh eo biển Mactan.
Do đặc thù địa hình luồng lạch vô cùng phức tạp, \(N\) hòn đảo này được kết nối với nhau bởi đúng \(N-1\) tuyến đường biển tự nhiên đã được vẽ bản đồ an toàn. Hệ thống này kết nối toàn bộ các đảo và không hề tồn tại chu trình (bất kỳ đường vòng nào khác đều có nguy cơ đâm vào rạn san hô ngầm sắc nhọn làm đắm tàu). Mạng lưới này tạo thành một cấu trúc cây (Tree) với hòn đảo gốc số \(1\) là nơi soái hạm Trinidad đang neo đậu để điều phối toàn bộ lực lượng. Mỗi đảo \(i\) ban đầu được bố trí một mức độ phòng thủ bằng các công sự gỗ là \(A_i\).
Để đối phó với sự bao vây thần tốc từ hàng trăm thuyền độc mộc Balangay cực kỳ cơ động của chiến binh Lapulapu, Duarte Barbosa cần liên tục điều phối lực lượng thông qua hai mệnh lệnh quân sự khẩn cấp:
Hãy giúp các thủy thủ Tây Ban Nha giữ vững phòng tuyến và hoàn thành cuộc rút lui lịch sử này!
1 u v x: Cộng thêm giá trị \(x\) vào tất cả các đỉnh trên đường đi đơn giữa hai đỉnh \(u\) và \(v\) (bao gồm cả \(u\) và \(v\)).2 u: Tìm giá trị lớn nhất trong số các đỉnh thuộc cây con gốc \(u\).1 u v x (\(-10^9 \le x \le 10^9\))2 u2, in ra giá trị lớn nhất tìm được trên một dòng.Test 1
5 4
1 2 3 4 5
1 2
1 3
2 4
2 5
2 2
1 4 3 10
2 2
2 1
5
14
14
[1] (A=1)
/ \
[2] (A=2) [3] (A=3)
/ \
[4] (A=4) [5] (A=5)
2 2): Thanh tra phân khu dưới quyền đảo \(2\). Phân khu này gồm các đảo \(\{2, 4, 5\}\) có sức mạnh là \(\{2, 4, 5\}\). Đảo mạnh nhất là \(5\) với giá trị phòng thủ là \(5\).1 4 3 10): Chi viện dọc hành lang nối giữa đảo \(4\) và đảo \(3\). Đường đi gồm các đảo: \(4 \to 2 \to 1 \to 3\). Tất cả các đảo này được cộng thêm \(10\) sức mạnh.Trạng thái phòng thủ mới của cây: \(A = \{11, 12, 13, 14, 5\}\)2 2): Thanh tra lại phân khu dưới quyền đảo \(2\). Sức mạnh các đảo \(\{2, 4, 5\}\) hiện tại là \(\{12, 14, 5\}\). Đảo mạnh nhất là \(4\) với giá trị \(14\)2 1): Thanh tra toàn bộ hệ thống phòng thủ (gốc \(1\)). Toàn bộ các đảo \(\{1, 2, 3, 4, 5\}\) có sức mạnh tương ứng là \(\{11, 12, 13, 14, 5\}\). Đảo mạnh nhất vẫn là \(4\) với giá trị \(14\)Test 2
3 3
5 10 15
1 2
2 3
2 1
1 1 3 -5
2 1
15
10
_
_ |_|_
(_| |_)
| |
_|_ | _
(_| | | |_)
| | | |
_|_|_|_|_
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ ~ ~ ~ ~ ~
Khi đặt bút viết những dòng cuối cùng dâng lên Hoàng đế Carlos I, thuyền trưởng Juan Sebastián Elcano hồi tưởng lại quyết định sinh tử ở Nam Đại Tây Dương. Để trốn tránh các hạm đội tuần tra của Bồ Đào Nha, Elcano đã phải chọn lộ trình xuống các vĩ độ cực Nam hoang dã — nơi được mệnh danh là "Vĩ tuyến tử thần".
Lộ trình trên biển gồm \(N\) phân vùng hải lý nối tiếp nhau, đánh số từ \(1\) đến \(N\). Phân vùng \(i\) có chỉ số áp lực thời tiết và sóng biển tích lũy là \(A_i\) (\(A_i \ge 0\)).
Con tàu Victoria đã quá rệu rã, không thể di chuyển liên tục từ đầu đến cuối mà không bảo trì. Elcano có thể quyết định cho tàu thả neo đại tu tại các hòn đảo hoang bất kỳ lúc nào. Kế hoạch này là một canh bạc:
Áp lực tích lũy bình phương: Nếu tàu đi liên tục qua một chặng gồm các phân vùng từ \(l\) đến \(r\) mới dừng lại, áp lực phá hủy tác động lên vỏ gỗ tỷ lệ thuận với bình phương tổng chỉ số áp lực của chặng đó:
Giới hạn chịu tải tuyệt đối (\(L\)): Tại bất kỳ chặng di chuyển liên tục nào, tổng lực tác động không được vượt quá ngưỡng chịu đựng \(L\) của khung tàu (\(\sum_{i=l}^r A_i \le L\)). Nếu vượt quá, vỏ tàu sẽ nứt toác ngay lập tức.
Với tư cách là hoa tiêu vĩ đại nhất của chuyến viễn chinh, bạn hãy giúp Elcano tìm ra phương án chia chặng tối ưu sao cho tổng áp lực phá hủy của toàn bộ chuyến đi là nhỏ nhất.
-1.Test 1
5 10 8
3 4 2 5 2
108
Với \(N = 5, C = 10, L = 8\), mảng \(A = [3, 4, 2, 5, 2]\).
Phương án tối ưu là chia mảng thành \(5\) chặng đơn lẻ (mỗi chặng \(1\) phần tử):
Test 2
3 10 5
2 7 1
-1
Chào mọi người nha! Em là thằng nhóc lớp 8 chuyên Tin mới được tuyển vào làm chân chạy vặt, test đề cho ban tổ chức Magellan Contest 2026 nè.
Hôm nay em phải lên đây kể cho các bác nghe quả drama siêu to khổng lồ, gay cấn hơn cả phim hành động vừa mới xảy ra trong phòng họp Discord kín của ban tổ chức. Một câu chuyện kết hợp giữa lịch sử hàng hải, toán học bão táp, và màn đấu trí cực gắt giữa hai thần tượng của em là anh và anh để tạo ra siêu phẩm "Bài 5" cho contest lần này!
Chuyện là thế này, tuần trước ban tổ chức chúng em họp để chốt đề cho contest. Ý tưởng xuyên suốt là mô phỏng lại chuyến đi của hạm đội Armada de Molucca qua các đại dương.
Đến lượt thiết kế Bài 5 – bài quyết định xem ai sẽ là nhà vô địch – thì anh hào hứng share màn hình Discord, đưa ra một bài toán mà anh ấy tự khen là "siêu lãng mạn":
Ý tưởng của em là thế này: Tàu của Magellan xuất phát từ vĩ độ \(1\) đến vĩ độ \(N\). Tại mỗi vĩ độ \(i\), hạm đội sẽ gặp một số lượng hòn đảo bằng số ước của \(i\) (tức là \(d(i)\)). Thí sinh chỉ cần tính tổng số đảo mà Magellan có thể ghé thăm trên toàn bộ chuyến đi: \(S = \sum_{i=1}^N d(i)\) với giới hạn \(N \le 10^{12}\).
Nghe xong, em đang gặm dở cái đùi gà mà suýt rơi cả ra ngoài vì bài này... quen quá! Quả nhiên, anh vừa nhìn qua một phát là thở dài thườn thượt, giọng đầy sự bất lực gõ mic bôm bốp:
Này , mày làm đề thế này thì học sinh nó 'cook' sạch trong 5 phút à? Cái công thức tính tổng số ước số \(\sum d(i)\) dùng công thức chia căn \(\lfloor N/i \rfloor\) từ thời Napoléon cởi truồng tắm mưa rồi! Với lại đây là Magellan Contest, đi biển phải có bão tố, phải có sóng thần chứ dễ thế ai chơi?!
Anh gãi đầu gãi tai, ấm ức bảo:
Nhưng em muốn nó liên quan đến lịch sử! Magellan đi vòng quanh Trái Đất, tức là quỹ đạo của ông ấy có tính tuần hoàn và phản chiếu song song qua đường xích đạo mà anh !
Đầu anh nảy số với tốc độ ánh sáng. Anh ấy đập bàn cái rầm, mắt sáng lên như đèn pha:
Ý tưởng 'phản chiếu song song' của mày hay đấy ! Nếu quỹ đạo phản chiếu, ta không dùng vĩ độ \(i\) nữa, mà ta bắt Magellan phải đi qua các tọa độ bình phương \(i^2\)! Lúc này, tại mỗi điểm dừng chân \(i\) từ \(1\) đến \(N\), số lượng hòn đảo san hô (hoặc luồng lạch an toàn để neo đậu) xung quanh sẽ là số ước số của vĩ độ bình phương: \(d(i^2)\)!
Thí sinh sẽ phải giúp Magellan tính toán tổng số lượng luồng lạch an toàn trên toàn bộ \(N\) trạm dừng chân để lập bản đồ cho hạm đội phía sau:
Với giới hạn thời gian chạy là 1.0 giây, bộ nhớ 256 MB, và cho \(N\) lên tới \(10^{11}\)! Như thế mới xứng tầm bài 5 của Magellan Contest chứ!
Anh nghe xong mặt tái mét, lắp bắp:
Anh ơi, anh định làm khó thí sinh đến mức này sao?! \(N \le 10^{11}\) mà tính \(d(i^2)\) thì mấy cách duyệt hay tính toán thông thường khóc thét hết! Bài này khoai thế này sao mà chạy kịp trong 1 giây?!
Anh cười lớn đầy tự tin:
Thì thế mới là Magellan! Phải vượt qua bão táp eo biển mới tới được Thái Bình Dương! Mày không tin học sinh bây giờ out trình à? Giờ mày giải thích ví dụ cho thằng út nó hiểu để nó làm testcase đi!
Thế là anh quay sang lôi bảng vẽ ra giải thích cho em với ví dụ siêu nhỏ \(N = 4\):
Em nghe xong gật gù hiểu ra vấn đề, liền nhận nhiệm vụ phụ tá. Hai đại ca lao vào code quên ăn quên ngủ. Anh thì cặm cụi viết code trâu bằng Python để chạy các testcase nhỏ \(N \le 10^6\) làm bộ dữ liệu đối chiếu, còn anh thì gõ C++ lo phần thuật toán quy hoạch động tối ưu để gánh trọn giới hạn \(N = 10^{11}\).
Thực ra bài này cũng khá đơn giản thôi! Tóm cái váy lại thì đây là phần nhiệm vụ:
Test 1
4
12
Test 2
100
1194