Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Bồi dưỡng HSGQG

Đà Nẵng tối thứ 4, 10/2023


04/10:

Bài A. KJUMP
File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 2s
Hạn chế bộ nhớ: 256 megabytes

Hùng đang chơi một trò chơi trên máy tính như sau: Có n cái cọc gỗ, cọc thứ i có chiều cao là ai . Một
con ếch xuất phát tại một cọc nào đó và nhảy về bên phải. Khả năng nhảy xa của ếch là 100, và nó luôn
muốn nhảy đến vị trí cao hơn. Vì vậy, mỗi bước nhảy, nếu đang đứng ở cọc thứ i thì nó sẽ nhảy sang cọc
j gần nhất thoả mãn i < j ≤ i + 100 và ai < aj ; nếu cọc j như vậy không tồn tại thì ếch sẽ đứng yên ở
bước nhảy này. Để chơi tốt, Hùng muốn biết trước các kết quả chơi, vì vậy cậu ấy cần bạn giúp trả lời
Q truy vấn thuộc một trong hai dạng sau:

• 1 i k: Tìm vị trí mà ếch đang đứng nếu xuất phát tại cọc thứ i và nhảy k bước;

• 2 L H d: Tăng chiều cao của các cọc i (L ≤ i ≤ H) lên d đơn vị (d có thể âm).

Dữ liệu vào

• Dòng đầu tiên chứa n và Q (1 ≤ n, Q ≤ 105 );

• Dòng thứ hai chứa a1 , a2 , . . . , an (1 ≤ ai ≤ 109 );

• Mỗi dòng trong số Q dòng tiếp theo chứa ba số nguyên, là 1, i, k hoặc 2, L, H tương ứng mô tả cho
truy vấn loại 1 hoặc loại 2. Dữ liệu bảo đảm độ cao của các cột không bao giờ âm.

Kết quả
Với mỗi truy vấn loại 1, in ra trên một dòng chỉ số của cọc mà ếch đứng.

Hạn chế

• Có 8% số test với n, Q ≤ 1000;

• Có 20% số test không có truy vấn loại 2;

• Có 24% số test với k = 1 trong tất cả các truy vấn loại 1;

• Có 48% số test với ràng buộc gốc.

Ví dụ
stdin stdout
5 4 4
1 3 2 5 4 2
1 1 2 4
2 1 3 2
1 1 2
1 3 1

Trang 1 trên 4
Bồi dưỡng HSGQG
Đà Nẵng tối thứ 4, 10/2023

Bài B. QMEX
File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 1 giây

Cho dãy số nguyên không âm a = a1 , a2 , . . . , an và Q truy vấn. Mỗi truy vấn có dạng L, R: Hãy tìm số tự nhiên
nhỏ nhất không xuất hiện trong {aL , aL+1 , . . . , aR }.

Dữ liệu vào
• Dòng đầu tiên chứa hai số nguyên dương n, Q (n, Q ≤ 5 × 105 );
• Dòng thứ hai chứa n số nguyên không âm: a1 , a2 , . . . , an (ai ≤ 109 );
• Mỗi dòng trong số Q dòng tiếp theo chứa hai số nguyên L, R mô tả một truy vấn.

Kết quả
Gồm Q dòng, dòng thứ i ghi một số nguyên là kết quả cho truy vấn thứ i.

Ví dụ
stdin stdout
7 4 4
3 1 0 5 3 2 6 2
1 7 0
1 3 2
4 7
2 3

Hạn chế
• Có 24% số test với n, Q ≤ 5000;
• Có 48% số test với n, Q ≤ 50000;
• Có 28% số test với ràng buộc gốc.

Trang 2 trên 4
Bồi dưỡng HSGQG
Đà Nẵng tối thứ 4, 10/2023

Bài C. YGAME
File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 1 giây

Cho n đống sỏi đánh số từ 1 đến n, đống thứ i có ai viên. Xét một trò chơi như sau:

• Có hai người, luân phiên nhau thực hiện lượt chơi


• Đến lượt mình, người chơi chọn tùy ý không quá k đống sỏi và bốc đi ở mỗi đống một số sỏi tùy ý (khác 0)
• Ai không thực hiện được lượt chơi hợp lệ nữa sẽ thua cuộc. Rõ ràng là trò chơi sẽ kết thúc sau hữu hạn bước,
nên sẽ không có kết quả hòa

Bạn sẽ chơi trò này với máy, bạn được quyền chọn người đi trước và hãy dành chiến thắng trong trò chơi.
Tương tác:

• Đầu tiên bạn cần đọc vào hai số n k (1 ≤ k ≤ n ≤ 105 )


• Tiếp theo bạn cần đọc vào n số a1 a2 . . . an (1 ≤ ai ≤ 106 ). Tổng các số trong dãy a không quá 106
• Sau đó bạn cần in ra 1 hoặc 0 tương ứng là bạn muốn đi trước hoặc đi sau
• Sau đó trò chơi sẽ bắt đầu. Khi đến lượt máy, máy sẽ in ra các số mô tả lượt chơi mà máy thức hiện, bạn
cần phải đọc vào các số này và chuyển sang lượt chơi của bạn. Khi đến lượt bạn, bạn cần in ra các số mô tả
lượt chơi mà bạn thực hiện và chuyển sang lượt chơi của máy
• Các số dùng để mô tả một lượt chơi được ghi trên một dòng theo định dạng: m i1 d1 i2 d2 . . . im dm
(1 ≤ m ≤ k, 1 ≤ ij ≤ n, 1 ≤ dj ≤ aij ) tương ứng là số đống được bốc, chỉ số và số lượng sỏi sẽ bốc của các
đống đó
• Trò chơi sẽ kết thúc khi không còn viên sỏi nào nữa

Lưu ý, sau mỗi lần in ra bạn cần đẩy dữ liệu ra luồng chuẩn (flush(stdout) hoặc cout « endl) để tương tác được
với máy.

Ví dụ
stdin stdout
4 2 1
1 2 3 4 1 4 1
1 2 2 2 3 2 4 2
2 1 1 4 1 1 3 1

Trang 3 trên 4
Bồi dưỡng HSGQG
Đà Nẵng tối thứ 4, 10/2023

Bài D. HAPPY
File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 3 giây

Ở một đất nước nọ, có n người dân sống thành một vòng tròn, đánh số từ 0 đến n − 1 (n là một số lẻ). Hiện tại,
độ hạnh phúc của người thứ i là ai . Mỗi buổi sáng, họ sẽ gửi thiệp chúc mừng cho nhau. Buổi chiều khi tan làm,
mọi người đều rất mệt mỏi và độ hạnh phúc trở về 0. May mắn thay, lúc này họ nhận được thiệp chúc mừng từ
bạn bè. Người càng hạnh phúc thì bức thiệp họ làm ra càng đẹp, do đó càng khiến người nhận thấy hạnh phúc. Độ
hạnh phúc của một người vào cuối ngày (cũng là độ hạnh phúc vào sáng hôm sau) được tính bằng tổng độ hạnh
phúc của những người đã gửi thiệp cho anh ta.
Vào ngày thứ 0, tất cả hàng xóm gửi thiệp cho nhau. Mỗi ngày họ đều tăng khoảng cách gửi lên gấp đôi so với
ngày hôm trước. Cụ thể, vào ngày thứ t, người thứ i sẽ gửi thiệp cho người thứ (i + 2t )%n và (i − 2t %n + n)%n.
Lưu ý là một người có thể gửi hai tấm thiệp cho cùng một người khác, cũng có thể gửi thiệp cho chính mình. Hãy
tính độ hạnh phúc của từng người sau k ngày

Dữ liệu vào
• Dòng đầu chứa hai số tự nhiên: n k
• Dòng tiếp theo chứa n số tự nhiên: a0 a1 . . . an−1

Kết quả
• Ghi n số là độ hạnh phúc của n người. Do kết quả có thể rất lớn, chỉ cần in ra phần dư chia khi chia cho
109 + 7

Ví dụ
stdin stdout
3 1 5 4 3
1 2 3
3 2 7 8 9
1 2 3

Hạn chế
• 0 ≤ n ≤ 106 , 0 ≤ k ≤ 109
• Có 10% số test với k ≤ 100
• Có 30% số test với n ≤ 100
• Có 30% số test với ai = i
• Có 30% số test với ràng buộc gốc

Trang 4 trên 4

You might also like