| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | LQDOJ Cup 2025 - Round #6 - Trick or Treat | 100 (p) | 1.0s | 512M |
| 2 | LQDOJ Cup 2025 - Round #6 - Liên minh tối thượng | 100 (p) | 3.0s | 512M |
| 3 | LQDOJ Cup 2025 - Round #6 - Đi tìm ẩn số | 100 (p) | 1.0s | 512M |
| 4 | LQDOJ Cup 2025 - Round #6 - Tô màu đồ thị | 100 (p) | 2.5s | 1G |
| 5 | LQDOJ Cup 2025 - Round #6 - Chụp ảnh trẻ trâu | 100 (p) | 3.5s | 512M |
Đêm Halloween, có \(n\) ngôi nhà trên một khu phố tham gia vào một "cuộc chiến" phát kẹo. Các ngôi nhà nằm liên tiếp nhau trên một con đường và được đánh số từ \(1\) đến \(n\) theo thứ tự từ trái sang phải. Mục tiêu của mỗi nhà là phải "thoát" khỏi đêm Halloween với một số lượng kẹo nhất định.
Hiện tại, nhà thứ \(i\) có \(a_i\) giỏ kẹo. Theo quy định của khu phố, để được coi là "thành công", nhà thứ \(i\) phải kết thúc đêm với đúng \(b_i\) giỏ kẹo.
Trong suốt đêm, ba sự kiện có thể xảy ra:
Hãy tính tổng chi phí nhỏ nhất để tất cả các nhà đều thành công.
Vào từ file văn bản trortr.inp:
Gọi:
Dữ liệu đảm bảo \(\Sigma_n \leq 10^6\).
Ghi ra file văn bản trortr.out:
trortr.inp2
2 6 7 15
3 13
11 24
2 2 2 7
1 9
9 7
trortr.out114
20
Atlantis không chỉ là một thành phố, nó là một nền văn minh vĩ đại. Dù đã bị nhấn chìm dưới đại dương, nó chưa từng bị quên lãng trong ký ức của loài người. Dưới độ sâu hàng ngàn km, hòn đảo này tỏa sáng rực rỡ như một viên ngọc lam khổng lồ được tạc từ pha lê và hợp kim không tên. Atlantis nổi tiếng với những tòa tháp cao đồ sộ được thiết kế theo trăm ngàn hình thù kỳ ảo thách thức mọi giới hạn vật lý. Toàn bộ thành phố được bao bọc trong một mái vòm năng lượng plasma trong suốt, tạo ra một bầu khí quyển nhân tạo hoàn hảo, nơi những sinh vật biển kỳ dị nhất cũng phải nép mình trước sự vĩ đại của con người.
Nhưng nó chẳng là gì so với vương quốc Uchiha -- biểu tượng của một sức mạnh quân sự lỗi lạc (lỗi thời và lạc hậu), một vùng đất mà mọi người chung sống với nhau bằng những cái liếc mắt đầy thân thiện. Người dân trong vương quốc đều mắc một căn bệnh kỳ lạ, mắt của họ đỏ như cà chua mỗi khi tới tuổi dậy thì. Nhưng cũng nhờ những đôi "hắc nhãn" ấy mà mỗi người đều có nhũng năng lực kỳ bí. Để tránh xung đột sức mạnh, quốc vương đã chia đất nước thành các khu vực, mỗi khu vực là một ngôi làng -- nơi chung sống của một nhóm người sở hữu cùng một loại năng lực. Bản đồ vương quốc Uchiha có dạng hình chữ nhật gồm \(m\) hàng và \(n\) cột mà mỗi ô là một ngôi làng. Các hàng được đánh số từ \(1\) đến \(m\) và các cột được đánh số từ \(1\) đến \(n\). Ngôi làng ở hàng \(i\) và cột \(j\) được ký hiệu là \((i, j)\). Người dân của ngôi làng này có chỉ số sức mạnh là \(A_{i, j}\). Để thuận tiện cho việc đi lại, quốc vương đã cho xây dựng một số con đường. Giữa hai ngôi làng \((x, y)\) và \((u, v)\) có một con đường kết nối trực tiếp khi và chỉ khi \(|x - u| + |y - v| = 1\).
Hôm nay là một ngày thiêng liêng của toàn bộ người dân Uchiha, ngày kỷ niệm \(30^{30}\) vương quốc phồn thịnh này ra đời. Để thị uy với các vương quốc khác, quốc vương đã chọn ra một số ngôi làng tham gia đội diễu binh diễu hành trong lễ kỷ niệm. Các ngôi làng được chọn cần thỏa mãn các điều kiện sau:
Một tập hợp \(S\) các ngôi làng được gọi là khu vực liên thông khi và chỉ khi từ mọi cặp ngôi làng \((x_1, y_1)\) và \((x_2, y_2)\) thuộc \(S\), tồn tại cách di chuyển giữa hai ngôi làng này mà chỉ đi qua các ngôi làng thuộc \(S\).
Một dãy số \(a_1, a_2, \ldots, a_k\) được gọi là cấp số nhân khi và chỉ khi tồn tại số \(q\) sao cho \(a_i = q \cdot a_{i - 1}\) với mọi \(1 \leq i < k\).
Để buổi lễ diễu binh được thật sự hoành tráng, quốc vương muốn số ngôi làng được lựa chọn là càng lớn càng tốt. Các bạn hãy giúp quốc vương tìm số ngôi làng tối đa có thể chọn nhé.
Vào từ file văn bản league.inp:
Ghi ra file văn bản league.out:
league.inp6 7
1 2 4 9 7 11 1
6 8 16 10 19 19 1
10 8 5 4 2 15 1
13 2 5 6 5 12 1
15 2 4 5 6 11 1
17 19 8 32 8 17 1
league.out12
Đây là bài toán tương tác, thí sinh chỉ có thể giải bằng ngôn ngữ C++.
Bạn đang tham gia trò chơi ``thử thách đoán số''. Để chinh phục giải thưởng độc đắc siêu to khổng lồ, bạn cần tìm ra mật mã của chương trình là một cặp số nguyên dương \((x, y)\). Chương trình cho bạn một manh mối: hai số này thỏa mãn \(1 \leq x, \sqrt[3]{y} \leq 100\) và \(x \leq y\).
Để giúp bạn tìm ra mật mã, MC sẽ cung cấp thêm thông tin. Bạn được phép đưa cho MC một số nguyên \(k\) thỏa mãn \(1 \leq k \leq 10^{18}\). Khi đó, MC sẽ ngay lập tức cho bạn biết có hay không hai số nguyên không âm \(\alpha, \beta\) thỏa mãn \(k = \alpha \cdot x + \beta \cdot y\) (nhưng không cho biết cụ thể hai số \(\alpha, \beta\) nào). Vì tính kiên nhẫn của MC có hạn, bạn chỉ có thể làm điều này không quá \(10^6\) lần.
Cũng có đôi khi, chương trình cố tình gài mật mã là một cặp số bẫy để khiến bạn không thể tìm được. Nếu bạn tinh ý và phát hiện được ra ý đồ này, bạn vẫn nhận được giải độc đắc. Một cặp số \((x, y)\) được gọi là cặp số bẫy khi và chỉ khi tồn tại một cặp số nguyên \((\chi, \psi)\) sao cho:
Số lần bạn lấy thông tin từ MC càng ít, giải thưởng của bạn càng lớn. Hãy tìm ra mật mã với số lần lấy thông tin càng ít càng tốt nhé!
Thí sinh cần cài đặt hàm pair<int, int> play(int subtask_id): Hàm nhận vào tham số subtask_id là số thứ tự của subtask chứa test này. Hàm cần trả về một pair thể hiện mật mã trong đó first là \(x\) và second là \(y\), hoặc trả về \(\{-1, -1\}\) nếu mật mã này là một cặp số bẫy.
Thí sinh được cung cấp thư viện guess.h bên trong có cài đặt sẵn hàm bool check(long long k): Hàm nhận vào một số nguyên \(k\) thỏa mãn \(1 \leq k \leq 10^{18}\) và trả về true khi và chỉ khi tồn tại hai số nguyên không âm \(\alpha, \beta\) sao cho \(k = \alpha \cdot x + \beta \cdot y\).
Mỗi test có không quá \(100\) bộ dữ liệu. Hàm play được gọi một lần cho mỗi bộ dữ liệu.
Lưu ý:
#include "guess.h" ở dòng đầu tiên của chương trình.main. Việc viết hàm main có thể gây ra lỗi biên dịch cho bài làm của thí sinh.Kết quả sai nếu như tham số truyền vào hàm check không hợp lệ, hàm check được gọi nhiều hơn \(10^6\) lần trong một bộ dữ liệu, hay kết quả trả về của hàm play không chính xác.Bộ test được chia làm năm subtask như sau:
Với mỗi test:
Điểm tối đa của một test là \(1\). Điểm của bài nộp là tông điểm đạt được ở tất cả các test.
Dưới đây là một ví dụ về sự tương tác. Trong ví dụ này, mật mã ẩn là \(x = 7\) và \(y = 22\). Khi đó, hàm play(1) được gọi:
guess(97) trả về false. Không tồn tại hai số nguyên không âm \(\alpha, \beta\) thỏa mãn \(97 = \alpha \cdot 7 + \beta \cdot 22\).guess(227) trả về true. Ta có \(227 = 23 \cdot 7 + 3 \cdot 22\).Cho một đa đồ thị vô hướng liên thông gồm \(n\) đỉnh và \(m\) cạnh. Các đỉnh được đánh số từ \(1\) đến \(n\) và các cạnh được đánh số từ \(1\) đến \(m\). Cạnh thứ \(i\) nối đỉnh \(u_i\) với đỉnh \(v_i\) và có trọng số là \(w_i\). Giữa hai đỉnh có thể có một hoặc nhiều cạnh nối, và một đỉnh có thể có cạnh nối tới chính nó. Mỗi đỉnh của đồ thị được tô một màu, màu của đỉnh thứ \(i\) được thể hiện bởi số nguyên \(c_i\). Hai đỉnh \(x\) và \(y\) được tô cùng màu khi và chỉ khi \(c_x = c_y\).
Với hai đỉnh \(x\) và \(y\) bất kì trên đồ thị, ta định nghĩa giá trị \(d(x, y)\) như sau: Xét tất cả các đường đi có tổng trọng số nhỏ nhất từ \(x\) đến \(y\), ta chọn ra đường đi có số màu phân biệt của các đỉnh đi qua là nhỏ nhất. Giá trị \(d(x, y)\) chính là số màu phân biệt nhỏ nhất trên một đường đi ngắn nhất từ \(x\) đến \(y\) này.
Với mỗi đỉnh \(u\), gọi \(s_u = d(u, 1) + d(u, 2) + \ldots + d(u, n)\). Hãy tính \(s_u\) với mọi đỉnh \(u\) trên đồ thị.
Vào từ file văn bản color.inp:
Ghi ra file văn bản color.out:
color.inp5 4
1 2 3 2 3
1 2 9
2 3 7
2 4 2
1 5 2
color.out10 9 11 9 12
Ngày xửa ngày xưa, ở làng Nhuyễn Hệ, có một cô bé tên là Ngáp, hiệu là Taro. Cô ta nổi tiếng với khuôn mặt thật vi diệu, có thể biến đổi rất kỳ quái và thể hiện rất nhiều dạng cảm xúc. Bởi thế, cô thích selfie và lưu giữ các bức ảnh khuôn mặt mình. Nếu cô chụp 50 bức ảnh thì cũng là 50 sắc thái khác nhau, mỗi bức trông một khác. Đặc biệt nhất là, không bức nào giống với khuôn mặt thật cả. Nhưng biệt tài này cũng tai hại, khi vào một ngày đẹp trời, một thầy giáo cute nào đó vào lớp cô, vô tình rút chiếc Iphone 6plus ra chụp lại vài bức ảnh của cô, thì cô sẽ phải sống trong mối đe doạ bị dìm hàng trên Facebook bất cứ lúc nào.
Lớn lên, Ngáp mở trường mầm non chuyên nuôi nhốt trẻ trâu. Những người được tuyển vào đây phải là sửu nhi giống bà chủ. Vì vậy mà ở đây chụp ảnh là hoạt động luôn được ưa thích.
Để chụp ảnh, các sửu nhi sẽ ngồi vào một chiếc ghế chiều dài \(\ell\). \(n\) sửu nhi, được đánh số từ \(1\) đến \(n\), lần lượt được gọi để ngồi vào ghế. Sửu nhi thứ \(i\) có "độ rộng" cơ thể là \(w_i\), nghĩa là, khi ngồi vào ghế, sửu nhi \(i\) luôn chiếm một khoảng chỗ độ dài \(w_i\). Hai sửu nhi bất kỳ không được ngồi lòng hay gác chân lên nhau, mặc dù chúng có thể ngồi sát nhau một cách tuỳ ý. Khi được gọi đến tên mình, các sửu nhi sẽ nhìn xem trên ghế có khoảng trống nào vừa với "độ rộng" cơ thể mình hay không. Nếu có, chúng chắc chắn sẽ ngồi lên ghế. Vì trẻ trâu, chúng sẽ chọn một chỗ bất kì ngồi được để ngồi, vì vậy đến lượt người tiếp theo có thể không còn chỗ để ngồi nữa.
Những sửu nhi không được chụp ảnh sẽ làm hết sức mình để phá game. Để phòng tránh chúng Ngáp cần bạn viết chương trình xác định xem một sửu nhi có thể ngồi vào ghế hay không.
Vào từ file văn bản photos.inp:
Dữ liệu đảm bảo có không quá \(234\) bộ dữ liệu có \(n \geq 7\).
Ghi ra file văn bản photos.out:
sit nếu sửu nhi thứ \(i\) chắc chắn có chỗ ngồi;stand nếu sửu nhi thứ \(i\) chắc chắn không có chỗ ngồi;unsure nếu sửu nhi thứ \(i\) có thể có mà cũng có thể không có chỗ ngồi, tùy thuộc vào cách chọn vị trí của những người ngồi trước.Bộ test được chia làm bảy subtask như sau:
Với mỗi test, nếu output của bạn không hợp lệ (chứa kí tự lạ, chứa từ không phải sit, stand hay unsure, chứa số từ khác với đáp án của ban giám khảo,...) bạn được \(0\) điểm. Ngược lại, gọi \(\rho\) là số từ bạn đáp đúng và \(\sigma\) là tổng số từ có trong đáp án của ban giám khảo, số điểm bạn nhận được là \({(\frac{\rho}{\sigma})}^e\).
Điểm tối đa của một test là \(1\). Điểm của bài nộp là tông điểm đạt được ở tất cả các test.
photos.inp2
3 5
4 7 1
4 3
1 1 2 1
photos.outsit stand unsure
sit sit stand unsure
Trong ví dụ thứ hai, \(n = 4\) người có "độ rộng" lần lượt là \(1\), \(1\), \(2\) và \(1\). Nếu ta coi chiếc ghế như một đoạn của trục số
thực, từ điểm \(x = 0\) tới điểm \(x = 3\) thì: