You are on page 1of 11

Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

SNIPER
1s | 256MB
T, một nhân vật 2D, nhận nhiệm vụ tiêu diệt một nhóm các kẻ địch nguy hiểm để bảo vệ gối ôm alime của tổ chức.
Chiến trường có thể biểu diễn bởi mặt phẳng hai chiều, trong đó chiều y là chiều cao và chiều x là mặt đất. T luôn ở
tọa độ (0, 0). Trên bảng 2D có nhiều cây, được biểu diễn bởi các tia vuông góc với trục x và có điểm xuất phát trên
trục x, ngọn ở (x, y). Mỗi kẻ địch có thể được biểu diễn bởi một điểm lơ lửng trên không trung ở toạ độ (x, y). T
không thể tiêu diệt kẻ địch nếu đoạn thẳng nối từ T đến kẻ địch giao với cây ở vị trí khác ngọn.
Có n + m sự kiện xảy ra. Mỗi sự kiện thuộc một trong hai loại:
 1 i: lâm tặc phá rừng, phá huỷ cây thứ i trong input
 2 i: tổ chức yêu cầu tiêu diệt kẻ địch thứ i trong input. Cần trả về YES nếu kẻ địch thứ i bị tiêu diệt, NO
trong trường hợp không tiêu diệt được
Đảm bảo một query không xuất hiện 2 lần.
Đảm bảo tất cả kẻ địch và cây và T có toạ độ x phân biệt nhau.
Hình minh hoạ cho input mẫu:

Trong hình, kẻ địch 1 không được chặn, còn kẻ địch 2 và 3 được chặn bởi cây 1. Ở truy vấn thứ 4, cây 1 đã bị loại
bỏ nên kẻ địch 3 không được chặn bởi cây nào nữa.

INPUT
Dòng đầu tiên ghi n là số kẻ địch và m là số cây.
Mỗi dòng trong n dòng tiếp theo ghi 2 số là toạ độ x và y của kẻ địch.
Mỗi dòng trong m dòng tiếp theo ghi 2 số là toạ độ x và y của đỉnh cây.
n + m dòng tiếp theo, mỗi dòng gồm 2 số là các truy vấn theo thứ tự thời gian (0 < x, y ≤ 109)

OUTPUT
In ra n dòng, mỗi dòng là YES hoặc NO tương ứng cho câu trả lời trong truy vấn

GIỚI HẠN
 10% số test có n ≤ 1000; m ≤ 1000; x, y ≤ 3000
 20% số test có n ≤ 1000; m ≤ 1000

1
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

 20% số test có với mọi cặp kẻ địch và cây, kẻ địch luôn có toạ độ x lớn hơn

Sample Input Sample Output


32 YES
66 NO
96 YES
75
43
85
21
22
11
23
12

2
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

TEETH
Bách mắc chứng nghiến chặt răng khi ngủ.
Chiếc răng thứ i của Bách có độ cứng Di, nếu trong một đêm Bách nghiến răng với lực lớn hơn Di thì độ yếu của
chiếc răng thứ i sẽ tăng lên Ai đơn vị, ngược lại, nếu Bách nghiến răng với lực nhỏ hơn hoặc bằng Di thì chiếc răng
sẽ phục hồi và độ yếu sẽ giảm Bi đơn vị.
Độ yếu của mỗi chiếc răng tích lũy qua suốt các đêm. Ngoài ra, không bao giờ độ yếu bé hơn 0. Nếu tại bất kỳ thời
điểm nào, độ yếu của chiếc răng thứ i lớn hơn hoặc bằng giá trị ngưỡng Mi thì chiếc răng này sẽ bị rụng.
Lưu ý mỗi chiếc răng có giá trị ngưỡng, độ cứng, độ yếu riêng. Bách đã thực hiện một chương trình dự đoán mức độ
nghiến răng của mình vào mỗi đêm trong T đêm tiếp theo. Bách muốn biết chiếc răng nào sẽ rụng trong T đêm tới
nếu độ yếu ban đầu cho tất cả răng của cậu bằng 0.
Chương trình của bạn in ra N số, nếu chiếc răng i rụng thì in 1 ở vị trí đó, nếu không thì in 0.

INPUT
Dòng đầu tiên ghi 2 số N và T, là số răng của Bách và số đêm theo dõi. Mỗi dòng trong N dòng sau ghi 4 số nguyên
di, Ai, Bi và Mi, lần lượt là độ cứng, điểm cộng, điểm trừ và giá trị ngưỡng của răng thứ i. Dòng cuối cùng ghi T số,
lần lượt là lực mà Bách sẽ nghiến răng trong mỗi đêm tiếp theo.

OUTPUT
In ra N số, lần lượt ứng với mỗi chiếc răng, số này là 0 nếu chiếc răng vẫn còn sau T ngày và 1 nếu chiếc răng bị
rụng trong T ngày.

GIỚI HẠN
 1 ≤ N ≤ 250000. 1 ≤ T ≤ 104. 1 ≤ ai, bi ≤ 20, 1 ≤ di ≤ 109, 1 ≤ Mi ≤ 106 , 1 ≤ Fj ≤ 109
 18% số test có N, T ≤ 1000
 24% số test có: di = Dj, ai = aj và bi = bj Các răng đều có độ cứng như nhau, chịu tổn thương hàng ngày như
nhau và khả năng hồi phục như nhau.
 27% số test có: ai = bi Đối với tất cả các răng, thiệt hại hàng ngày tương đương với khả năng phục hồi của
chúng.

Sample Input Sample Output


35 010
1 2 3 15
5 10 5 10
3345
42834

Giải thích
- Răng 1 có độ cứng D1 = 1 nên hàng đêm tích lũy điểm độ yếu. Mỗi đêm, nó tích lũy được 2 điểm, sau 5 đêm, điểm
độ yếu là 10. Vì độ cứng M1 = 15 nên chiếc răng vẫn chưa rụng.
- Răng 2 có độ cứng D2 = 5. Đêm 1 và đêm 2, anh ta không nhận sát thương nào, vì độ yếu không thể giảm xuống
dưới 0, nên độ yếu giữ nguyên. Đêm thứ ba, lực nghiến là 8, vượt quá độ cứng của nó và độ yếu tăng lên 10, đạt
mức ngưỡng M2 = 10 và do đó bị rụng.
- Răng ba có độ cứng D3 = 3. Đêm 1 độ yếu tăng lên 3, đêm 2 chiếc răng hồi phục nên độ yếu giảm xuống còn 0
(lưu ý rằng nó không thể nhỏ hơn 0), đêm 3 lại cộng điểm yếu, đêm 4 hồi phục, cộng ở đêm 5 và kết thúc với độ yếu
bằng 3 nên không bị rụng.

3
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

RANGE
Natsu muốn tạo ra một online judge với các contest hàng ngày. N học sinh sẽ là những người dùng đầu tiên, mỗi học
sinh được cho điểm rating dựa trên khả năng của mình. Natsu muốn các contest cân bằng, có nghĩa là nếu một
contest được dành cho những người có rating X, thì chỉ những học sinh có rating nằm trong phạm vi [X - d, X + d]
mới có thể tham gia contest đó. Trong đó d là tham số hệ thống. Thầy giáo J không có nhiều tiền nên lo lắng về số
lượng máy chủ cần thiết. Số lượng máy chủ phụ thuộc vào số lượng học sinh có thể tham gia contest cùng lúc. Natsu
cho bạn biết rating của tất cả học sinh và tham số d và nhờ bạn tính toán số lượng người dùng tối đa có thể tham gia
contest cùng lúc.
Hãy xem xét rằng Natsu có contest và cậu không biết X, vì vậy chương trình phải xét tất cả các điểm X có thể có
cho contest mới nhất.
Natsu đã ra mắt hệ thống OJ của mình và đã có contest đầu tiên. Sau mỗi contest, rating của học sinh đều có sự thay
đổi, có người nâng điểm, có người hạ điểm. Đối với mỗi contest, Natsu sẽ đưa cho bạn các thay đổi về điểm rating
và sau khi nhận được chúng, bạn sẽ phải nói cho Natsu số lượng người dùng tối đa có thể thực hiện một contest
đồng thời là bao nhiêu?
Viết chương trình nhận danh sách điểm rating và giá trị của d và trả lời số lượng người dùng tối đa có thể tham gia
đồng thời vào một contest. Đối với các subtask cuối cùng, chương trình của bạn nhận được sự thay đổi điểm số sau
mỗi contest và phải tính số lượng người dùng có thể thực hiện contest đồng thời

INPUT
Dòng đầu tiên ghi 2 số N và d, số lượng học sinh và tham số OJ.
Dòng thứ hai ghi N số là rating của từng người dùng. Rating sẽ được sắp xếp từ thấp đến cao.
Dòng thứ ba, ghi số E là số contest mà J thực hiện. Đối với các subtask đầu tiên, E = 0.
Đối với mỗi contest, bạn phải đọc khối dòng sau: Dòng đầu tiên ghi số người dùng C có điểm thay đổi. Mỗi dòng
trong C dòng sau ghi 2 số nguyên i và Pi biểu thị học sinh thứ i đã thay đổi rating của mình thành Pi. Học sinh được
đánh số từ 1 đến N.

OUTPUT
In ra số lượng người dùng tối đa có thể đồng thời tham gia contest, có tính đến điểm số ban đầu. Nếu các contest đã
được thực hiện trên OJ, thì chương trình của bạn phải in ra với mỗi contest, số lượng người dùng tối đa có thể tham
gia đồng thời, có tính đến điểm số mới.

GIỚI HẠN
 1 ≤ N ≤ 105. 0 ≤ d ≤ 109. 1 ≤ pi ≤ 109. 0 ≤ E ≤ 105. 1 ≤ C ≤ N. Tổng C của tất cả các contest nhỏ hơn hoặc
bằng 105
 5% số test có: pi = pj, E = 0. Tất cả người dùng bắt đầu với số điểm như nhau.
 18% số test có: N, pi ≤ 1000, E = 0.
 19% số test có: N ≤ 1000, E = 0.
 19% số test có: N, E ≤ 1000.

Input Output
10 3 8
1 2 2 2 3 3 5 6 10 10
0
10 3 8
1 2 2 2 3 3 5 6 10 10 7
2 6
2

4
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

38
41
1
5 11

Ví dụ: nếu contest được hiệu chỉnh cho điểm X = 4 thì với điều kiện d = 3, người dùng có điểm trong khoảng [(4 -
3), (4 + 3)] = [1, 7] có thể tham gia. Có 8 học sinh có rating trong phạm vi đó, vì vậy câu trả lời là 8. Trong trường
hợp này, không có contest nào khác.
Đối với điểm số ban đầu, câu trả lời là 8 vì đây là trường hợp tương tự như trong ví dụ trước. Sau contest đầu tiên,
điểm của người dùng 3 và 4 thay đổi. Vì vậy, điểm rating mới là [1, 2, 8, 1, 3, 3, 5, 6, 10, 10], với điểm số X = 4,
chúng ta có 7 người dùng tiềm năng.
Sau contest 2, điểm rating của người 5 thay đổi. Lưu ý điểm của người dùng 3 và 4 giữ nguyên các thay đổi của họ
từ contest đầu tiên. Danh sách rating mới vẫn là [1, 2, 8, 1, 11, 3, 5, 6, 10, 10]. Đối với X = 4 có học sinh thỏa mãn.

5
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

TRANSPORT
Thị trưởng Bitland sắp khánh thành một mạng lưới giao thông công cộng mới. Mạng lưới có N trạm, đánh số từ 1
đến N, kết nối bằng N-1 tuyến đường hai chiều. Trong mạng lưới, có thể đi từ bất kỳ trạm A nào đến bất kỳ trạm B
nào khác. Nghĩa là, mạng giao thông công cộng có thể được biểu diễn dưới dạng cây, trong đó trạm là các đỉnh và
con đường là các cạnh. Ngoài ra, mỗi con đường có độ dài di là khoảng cách giữa 2 trạm đầu mút.
Thị trưởng quyết định giá vé trên mạng lưới và cần bạn giúp đỡ. Chính sách giá vé như sau:
- Trạm 1 nằm ở trung tâm thành phố và được coi là gốc của cây biểu diễn mạng lưới.
- Đối với bất kỳ trạm x, vùng x là tất cả các trạm trong cây con của x. Đó là tất cả các trạm y mà để đi từ y đến trạm
1 phải đi qua trạm x. Lưu ý vùng của trạm 1 là tất cả các trạm trên mạng.
- Nếu mua vé tại ga x, bạn có thể di chuyển tự do giữa tất cả các ga trong vùng x, nhưng bạn không thể di chuyển
đến ga bên ngoài vùng. Hành trình trong một vùng là một chuỗi các trạm phân biệt e1, e2, e3, ..., ek sao cho tất cả
chúng đều thuộc một vùng, và có một con đường kết nối ei với ei+1 cho tất cả 1 ≤ i < k. Nói cách khác, hành trình
trong một vùng có thể được hình dung như việc lên một trạm trong vùng và đi dọc theo các tuyến đường trong vùng
cho đến khi cuối cùng đến một trạm khác mà không đi qua một trạm 2 lần. Tất nhiên, giá vé tại một vùng phải tỷ lệ
thuận với hành trình tối đa mà bạn có thể thực hiện trong vùng đó.
Ngoài ra, có một số nhà ga do vị trí của chúng được coi là quan trọng và phải được tính đến trong chi phí.
Thị trưởng muốn bạn phát triển một chương trình trả lời Q truy vấn dưới dạng: Cho hai trạm A và B trong đó A
nằm trong vùng B, tính chiều dài của hành trình cực đại trong vùng của B đi qua trạm A? Hình dưới đây cho thấy
vùng B các tuyến đường đi qua A với các khoảng cách khác nhau giữa các tuyến đường.

Viết chương trình nhận cây đại diện cho mạng lưới giao thông và Q truy vấn và đối với mỗi truy vấn, hãy in ra độ
dài của hành trình tối đa.

INPUT
Dòng đầu tiên ghi 2 số N và Q. Mỗi dòng trong N - 1 dòng sau ghi 3 số nguyên ai, bi và di cho biết có một tuyến
đường nối 2 trạm ai và bi có độ dài di. Mỗi dòng trong Q dòng cuối ghi 2 số nguyên aj và bj đại diện cho truy vấn: Độ
dài hành trình tối đa trong vùng bj đi qua nhà ga aj là bao nhiêu ?

OUTPUT
In ra trên một dòng kết quả các truy vấn

GIỚI HẠN
 1 ≤ N, Q ≤ 105. 1 ≤ ai, bi ≤ N. 1 ≤ di ≤ 106.
 10% số test: di = 1. Mạng truyền tải là một đường mà nút i là nút cha của nút i + 1.
 10% số test: di = 1. Nút 1 là nút cha của tất cả các nút khác trong mạng.
 15% số test: N, Q ≤ 1000.
 15% số test: aj = bj Đối với tất cả các câu hỏi, hành trình tối đa phải đi qua trạm xác định vùng.

6
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

 15% số test: N, Q ≤ 50.000.

Input Output
10 3 15
122 12
135 19
143
253
561
752
863
698
10 8 4
62
71
61

GIẢI THÍCH
 Truy vấn 1 tương ứng với cây thứ nhất trong hình.
 Truy vấn 2, tuyến đường đi từ trạm 7 đến trạm 3.
 Truy vấn 3, tuyến đường đi từ trạm 9 đến trạm 3.

7
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

PASCAL
Khi đang nghĩ cách lắp động cơ cho tên lừa bằng Lego của mình, Khuê bỗng phát minh ra thiết kế sau:

Tên lửa của Khuê có hình tam giác, bao gồm N hàng, hàng thứ i (1 ≤ i ≤ N) từ trên xuống có i bộ phận, kí hiệu lần
lượt là (i, 1), (i, 1), …, (i, i). Bộ phận (1, 1) là trung tâm điều khiển, các bộ phận (2, 1), ..., (N, 1) là bình nhiên liệu
oxygen, các bộ phận (2, 2), ..., (N, N) là bình nhiên liệu hydrogen. Ban đầu, bình nhiên liệu oxygen ở (i, 0) có A[i -
1] mét khối nhiên liệu, còn bình nhiên liệu hydrogen ở (i, i) có B[i - 1] mét khối nhiên liệu (2 ≤ i ≤ N).
Khuê đánh giá sức mạnh C[i][j] của bộ phận (i, j) như sau:
 Trung tâm điều khiển có C[1][1] = 0.
 Bình nhiên liệu oxygen có C[i][1] = A[i - 1] (2 ≤ i ≤ N).
 Bình nhiên liệu hydrogen có C[i][i] = B[i - 1] (2 ≤ i ≤ N).
 Các bộ phận còn lại có C[i][j] = C[i – 1][j – 1] + C[i – 1][j] (3 ≤ i ≤ N, 1 < j < i).
Ở đáy của tên lửa, Khuê lắp động cơ vào các bộ phận (N, L), (N, L + 1), …, (N, R). Lực đẩy của tên lửa bằng với
tổng sức mạnh của các bộ phận được lắp động cơ.
Sau khi thiết kế ra tên lửa, Khuê đã có Q lần chỉnh sửa bản vẽ thuộc một trong hai dạng sau:
 a i x: Thay đổi A[i] thành x (1 ≤ i ≤ N - 1).
 b i x: Thay đổi B[i] thành x (1 ≤ i ≤ N - 1).
Sau mỗi lần chỉnh sửa, hãy giúp Khuê tìm lực đẩy mới của tên lửa. Do kết quả rất lớn, hãy tính lực đẩy theo modulo
998244353.

INPUT
Dòng đầu tiên ghi ba số N, L, R.
Dòng thứ hai ghi N - 1 số A[1], A[2], ..., A[N - 1].
Dòng thứ ba ghi N - 1 số B[1], B[2], ..., B[N - 1].
Dòng thứ bốn ghi một số Q.
Q dòng sau, dòng thứ i (1 ≤ i ≤ Q) ghi lần chỉnh sửa thứ i.

OUTPUT
In ra trên Q dòng, dòng thứ i (1 ≤ i ≤ Q) in ra lực đẩy của tên lửa sau khi thực hiện i lần chỉnh sửa đầu tiên.

GIỚI HẠN
3 ≤ N, Q ≤ 2.105. 1 ≤ L ≤ R ≤ N, 0 ≤ A[i], B[i], x < 998244353.
15% số test có N, Q ≤ 100.

8
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

20% số test có N, Q ≤ 3000.


20% số test có L = 1, R = N.
25% số test có L = 1.

Sample Input Sample Output


412 12
177 17
013
2
a24
b15

GIẢI THÍCH

Sức mạnh của các bộ phận sau lần chỉnh sửa thứ nhất. Bình nhiên liệu bị thay đổi có màu vàng, các bộ phận được
gắn động cơ có màu xanh.

9
Kỳ thi Học Sinh Giỏi Đại học Quốc gia Hà Nôi. Môn TIN HỌC.

POLY
Ở ngôi trường H hôm nọ, Minhcool vừa thách đấu Bách bằng một trò chơi để giành chức chủ tịch câu lạc bộ của
trường. Tuy nhiên, thay vì oẳn tù tì, đánh bài, hay là Nim, thì trò chơi lại là về đoán giá cổ phiếu. Minhcool hẹn sau
M ngày nữa, hai người sẽ đoán giá trị của cổ phiếu công ti S trong N + 1 ngày liên tiếp - từ ngày thứ M đến ngày thứ
M + N.
Sau khi nghiên cứu về công ti S, Bách phát hiện ra rằng:
Gọi F(x) là giá trị của cổ phiếu công ti S tại ngày thứ x. Tồn tại các số nguyên A0, A1, ..., AN sao cho F(x) = (A0x0 +
A1x1 + … + ANxN) modulo 998244353 với mọi x.
Ngoài ra, Bách đã ghi lại giá cổ phiếu ở các ngày 0, 1, ..., N.
Cho N, M, và các giá trị F(0), F(1), ..., F(N), hãy tính F(M), F(M + 1), ..., F(M + N).

INPUT
Dòng đầu tiên ghi hai số N và M
Dòng thứ hai ghi N + 1 số F(0), F(1), ..., F(N).

OUTPUT
In ra trên một hàng N + 1 số F(M), F(M + 1), ..., F(M + N).

GIỚI HẠN
 1 ≤ N ≤ 2.105, N < M ≤ 108, 0 ≤ F(i) < 998244353 (0 ≤ i ≤ N).
 10% số test có N = 1.
 20% số test có N ≤ 100.
 20% số test có N ≤ 1000.
 20% số test có: Chính xác 1 giá trị trong F(0), ..., F(N) khác 0.

Sample Input Sample Output


2 10 196 226 258
6 16 28

GIẢI THÍCH
Với A0 = 6, A1 = 9, A2 = 1, ta có:
 F(0) = (6 × 00 + 9 × 01 + 1 × 02) modulo 998244353 = 6.
 F(1) = (6 × 10 + 9 × 11 + 1 × 12) modulo 998244353 = 16.
 F(2) = (6 × 20 + 9 × 21 + 1 × 22) modulo 998244353 = 28.
 F(10) = (6 × 100 + 9 × 101 + 1 × 102) modulo 998244353 = 196.
 F(11) = (6 × 110 + 9 × 111 + 1 × 112) modulo 998244353 = 226.
 F(12) = (6 × 120 + 9 × 121 + 1 × 122) modulo 998244353 = 258.

10

You might also like