PreVOI 19
PreVOI 2019 - Robots
Nộp bàiPoint: 6
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Nhà máy V đang thử nghiệm ~\pi~-robot trên một lưới ô vuông khổng lồ. Một số ô là điểm sạc (chứa ổ cắm điện). Robot lúc đầu đứng ở một ô. Sau khi vận hành, robot sẽ đi qua một số ô, ở mỗi ô một số nguyên dương phút, rồi sau đó sẽ di chuyển sang ô hàng xóm kề cạnh (thời gian di chuyển là không đáng kể). Hãy xác định giá trị lớn nhất có thể của khoảng cách bé nhất từ Robot đến một điểm sạc nào đó sau khi robot vận hành ~N~ phút. Khoảng cách được sử dụng là khoảng cách Manhattan.
Khoảng cách Manhattan giữa hai ô có tọa độ ~(x, y)~ và ~(u, v)~ là ~|x-u| + |y-v|~.
Trong ví dụ trên 4 điểm sạc là các ô màu đen, robot ban đầu ở ô có vòng tròn trắng. Sau 5 phút, robot có thể đến ô ~(2, -1)~ và lúc này khoảng cách gần nhất đến một điểm sạc là 7. Và đó là giá trị lớn nhất.
Yêu cầu: In ra giá trị lớn nhất của khoảng cách bé nhất từ robot đến một điểm sạc.
Input
- Dòng đầu ghi số điểm sạc ~U~ (~1 \le U \le 10^4~) và số phút thử nghiệm ~N~ (~1 \le N \le 10^9~).
- Sau đó là ~U~ dòng, mỗi dòng ghi 2 số nguyên là tọa độ một điểm sạc ~(x, y)~.
- Dòng cuối ghi tọa độ lúc ban đầu của robot. Các tọa độ thỏa mãn ~-10^9 \le x, y \le 10^9~. Toàn bộ ~U+1~ điểm đôi một phân biệt.
Output
- In ra giá trị lớn nhất của khoảng cách bé nhất từ robot đến một điểm sạc.
[PreVOI 19] Bài 2: Icecream
Nộp bàiPoint: 7
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Ở cỗ máy bán kem tự động, mỗi que kem được bán với giá 50 cent và máy chỉ chấp nhận các loại đồng xu 50 cent, 1 USD và 2 USD (1 USD = 100 cent). Ban đầu, máy có ~M_{50}~ xu 50 cent, ~M_1~ xu 1 USD và ~M_2~ xu 2 USD. Tiền thối khi trả 1 USD chỉ được trả nếu máy có đồng 50 cent. Tiền thối khi trả 2 USD chỉ được trả khi máy có (a) một xu 1 USD và một xu 50 cent hoặc (b) ba xu 50 cent. Nếu cả hai trường hợp thỏa mãn, máy luôn chọn phương án (a). Nếu thiếu đồng xu để trả tiền thừa, cỗ máy sẽ không bán kem. Chỗ chứa xu của máy là hữu hạn, nên ở mọi thời điểm, không được có quá ~MMAX~ xu ở mỗi mệnh giá trong máy.
Có ~N~ học sinh đứng trước cỗ máy, và thầy giáo đi kèm cũng có rất nhiều đồng 50 cent, 1 USD, 2 USD. Nhiệm vụ của thầy giáo là phát cho mỗi bạn học sinh một đồng xu để mua đúng một que kem, nếu có dư tiền, học sinh sẽ trả cho thầy giáo, học sinh không trao đổi tiền với nhau.
Hãy đếm xem, thầy giáo có bao nhiêu cách phát xu? Hai cách phát được coi là khác nhau nếu tồn tại một học sinh nhận được đồng xu có mệnh giá khác nhau ở hai cách.
Yêu cầu: Hãy tính số cách phát tiền theo modulo ~10^9 + 9~.
Input
- Dòng đầu ghi số ~N~ (~1 \le N \le 300~) và ~MMAX~ (~1 \le MMAX \le 10000~).
- Dòng thứ hai ghi ba số nguyên, ~M_{50}, M_1~ và ~M_2~ (~0 \le M_{50}, M_1, M_2 \le MMAX~) – số lượng các xu mệnh giá 50 cent, 1 USD, 2 USD có trong máy lúc ban đầu.
Output
- In ra số cách phát tiền theo modulo ~10^9 + 9~.
[PreVOI 19] Bài 3: Modulo
Nộp bàiPoint: 7
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Cho hai số ~A~ và ~B~ khác nhau (~1 \le A, B < 10, A \ne B~), hãy tìm số ~S~ có đúng ~N~ chữ số, mỗi chữ số là ~A~ hoặc ~B~, sao cho phần dư khi chia ~S~ cho ~2^N~ là ~K~. Ví dụ với ~A = 7, B = 2, N = 3~ và ~K = 5~ thì ~S = 277~ là một đáp án.
Yêu cầu: Tìm một số ~S~ thỏa mãn điều kiện trên.
Input
- Dòng đầu ghi 2 chữ số ~A, B~ (~1 \le A, B < 10, A \ne B~).
- Dòng thứ 2 ghi 2 số ~N~ (~1 \le N \le 63~) và ~K~ (~0 \le K < 2^N~).
Output
- In ra số ~S~ bất kỳ nếu tồn tại. In ra -1 nếu không tồn tại số ~S~.
PreVOI 2019 - Phá game
Nộp bàiPoint: 6
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Sau khi vô địch AFF Cup 2018, đội tuyển bóng đá Việt Nam được một doanh nghiệp thưởng nóng bằng trò chơi bảng chứa vàng. Trong trò chơi, mỗi cầu thủ phải di chuyển trên một bảng hình chữ nhật ~m \times n~, các hàng được đánh số từ 1 đến ~m~ từ trên xuống dưới, các cột được đánh số từ 1 đến ~n~ từ trái qua phải. Ô ở hàng ~i~ cột ~j~ ghi số ~a_{ij}~.
Mỗi cầu thủ được yêu cầu đi từ ô ~(u, v)~ tới ô ~(p, q)~ (~1 \le u < p \le m, 1 \le v < q \le n~). Tại mỗi bước, cầu thủ chỉ được đi từ trên xuống dưới hoặc từ trái sang phải qua các ô kề cạnh, cứ đi qua ô nào (tính cả ô xuất phát và ô kết thúc), cầu thủ được nhận số vàng bằng số ghi trong trong ô đó.
Các cầu thủ vốn rất thông minh và tìm ra cách đi để đạt được số vàng tối đa được thưởng, tuy nhiên có một cổ động viên đối phương do cay cú nên muốn phá game. Anh ta gây sự bằng cách nhảy vào bảng chiếm trọn một ô, trừ ô xuất phát ~(u, v)~ và ô kết thúc ~(p, q)~. Trong trường hợp cổ động viên quá khích này nhảy vào ô thì cầu thủ không lấy được vàng tương ứng với số điểm trong ô đó.
Cổ động viên này muốn tìm một ô để ngồi chiếm sao cho trong chiến thuật tối ưu của mỗi cầu thủ, tổng số điểm lớn nhất có thể nhận được là tối thiểu.
Yêu cầu: Với ~k~ lượt đi của các cầu thủ biểu diễn bởi 4 số ~u, v, p, q~, hãy xác định tổng số vàng mà cầu thủ nhận được trong mỗi lượt nếu cổ động viên chọn được đúng ô tốt nhất có thể để chiếm theo mô tả trên.
Input
- Dòng đầu tiên chứa 3 số nguyên ~m, n, k~.
- ~m~ dòng tiếp theo, dòng thứ ~i~ chứa ~n~ số nguyên ~a_{i1}, a_{i2}, \dots, a_{in}~ (~|a_{ij}| < 10^6~).
- ~k~ dòng cuối, mỗi dòng chứa 4 số nguyên dương ~u, v, p, q~.
Output
- Ghi ra ~k~ dòng, dòng thứ ~i~ chứa một số nguyên là số điểm mà cầu thủ nhận được ở lượt chơi thứ ~i~ nếu cổ động viên xấu tính đó chọn được ô tốt nhất.
[PreVOI 19] Bài 5: Xây dựng dãy số
Nộp bàiPoint: 7
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Cho hai dãy số nguyên dương ~a_1, a_2, \dots, a_m~ và ~b_1, b_2, \dots, b_n~. Các bạn cần xây dựng dãy ~c~ gồm ~k~ phần tử ~c_1, c_2, \dots, c_k~ thỏa các yêu cầu sau:
- Tồn tại một dãy con của dãy ~c~ là dãy con của dãy ~a~.
- Các phần tử còn lại của dãy ~c~ là một dãy con của dãy ~b~ đồng thời là dãy con của dãy ~b~.
- Dãy ~c~ có thứ tự từ điển nhỏ nhất.
Chú ý: Dãy rỗng được là dãy con của mọi dãy nên nếu dãy ~c~ là dãy con của chỉ một trong hai dãy đã cho cũng được coi là thỏa mãn hai điều kiện đầu tiên.
Yêu cầu: Xây dựng dãy ~c~ có độ dài ~k~ thỏa mãn các điều kiện trên với thứ tự từ điển nhỏ nhất.
Input
- Dòng đầu chứa ba số nguyên ~m, n, k~ (~1 \le m, n \le 3000~; ~k \le m + n~).
- Dòng thứ hai chứa ~m~ số ~a_1, a_2, \dots, a_m~.
- Dòng thứ ba chứa ~n~ số ~b_1, b_2, \dots, b_n~.
Output
- Ghi ra một dòng duy nhất chứa ~k~ số của dãy ~c~ tìm được.
PreVOI 2019 - Múa lân
Nộp bàiPoint: 7
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Có hai dãy cột, mỗi dãy xếp hàng dọc và đánh số từ ~1~ tới ~n~, ký hiệu là dãy ~L~ và dãy ~R~. Cột thứ ~i~ của dãy ~L~ và cột thứ ~i~ của dãy ~R~ gọi là ngang hàng nhau. Trong quá trình biểu diễn, chân trái (trước và sau) của con lân chỉ đặt lên cột ở dãy ~L~ còn chân phải của nó chỉ đặt lên cột ở dãy ~R~. Mỗi khi đặt chân, hai chân trước luôn đặt ở hai cột ngang hàng và cũng như vậy, hai chân sau cũng luôn phải đặt ở hai cột ngang hàng.
Ban đầu con lân đứng bằng hai chân sau: chân trái ở cột số 1 dãy ~L~ và chân phải ở cột số 1 dãy ~R~ (để thực hiện động tác này người đứng sau phải nâng người đứng trước lên), sau đó con lân đặt hai chân trước lên cột 2 của mỗi dãy. Tiếp theo, con lân sẽ lần lượt nhảy qua dãy cột: mỗi bước nhảy, hai chân trước nhảy sang cặp cột ngang hàng kế tiếp cặp cột đang đứng và hai chân sau nhảy vào vị trí hai chân trước vừa đứng. Để tiết mục biểu diễn được an toàn, dãy các cột phải thỏa mãn hai điều kiện sau:
- Hai cột ở hai vị trí ngang hàng trên hai dãy phải có chiều cao bằng nhau.
- Chênh lệch độ cao giữa hai cột liên tiếp trong dãy ~L~ cũng như chênh lệch độ cao giữa hai cột liên tiếp trong dãy ~R~ không được vượt quá ~\Delta~.
Bạn cần kiểm tra nếu dãy cột không tuân thủ quy tắc trên, bạn cần loại bỏ một số ít nhất các cột và dồn các cột còn lại trong mỗi dãy giữ nguyên thứ tự để được hai dãy cột thỏa mãn điều kiện cho buổi diễn. Cho biết độ cao của các cột trong dãy ~L~ sau khi thực hiện công việc (dĩ nhiên đây cũng là độ cao của các cột trong dãy ~R~). Nếu có nhiều phương án tối ưu, chỉ ra phương án có dãy độ cao của các cột mang thứ tự từ điển lớn nhất.
Yêu cầu: Xác định dãy cột tối ưu thỏa mãn các điều kiện trên.
Input
- Dòng 1 chứa số nguyên dương ~n \le 4000~ và số nguyên dương ~\Delta \le 10^9~.
- Dòng 2 chứa ~n~ số nguyên dương, số thứ ~i~ (~\le 10^9~) là độ cao cột thứ ~i~ của dãy ~L~.
- Dòng 3 chứa ~n~ số nguyên dương, số thứ ~i~ (~\le 10^9~) là độ cao cột thứ ~i~ của dãy ~R~.
Output
- Dòng 1 ghi số lượng cột còn lại trên mỗi dãy (~m~).
- Dòng 2 ghi ~m~ số nguyên là độ cao của một cột trong dãy ~L~, các số phải được liệt kê theo thứ tự từ chiều cao cột đầu tiên đến chiều cao cột cuối cùng.