| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2021 - Aerobatics | 100 (p) | 2.0s | 128M |
| 2 | JOI 2021 - IOI Fever | 100 (p) | 5.0s | 512M |
| 3 | JOI 2021 - Food Court | 100 (p) | 1.0s | 512M |
Đây là bài chỉ nộp kết quả (Output Only).
Bitaro sẽ tham gia một cuộc thi bay nhào lộn. Máy bay của cậu giữ nguyên độ cao và bay qua các điểm kiểm tra. Ta biểu diễn khu vực bay bằng một mặt phẳng tọa độ. Có \(N\) điểm kiểm tra, đánh số từ \(1\) đến \(N\); điểm \(i\) có tọa độ \((X_i,Y_i)\).
Máy bay phải đi qua mỗi điểm kiểm tra đúng một lần theo cách sau:
Trong bước \(2\), điểm xuất phát được coi là đã chọn. Máy bay phải bay thẳng giữa hai điểm kiểm tra liên tiếp; không được bay theo đường cong hoặc đổi hướng giữa chừng.
Lộ trình là một đường gấp khúc. Máy bay đổi hướng không quá \(N-2\) lần. Nếu góc của đường gấp khúc tại một điểm kiểm tra nhỏ, máy bay phải đổi hướng nhiều tại đó, làm tăng nguy cơ gặp sự cố. Vì vậy, Bitaro muốn góc nhỏ nhất tại \(N-2\) điểm kiểm tra, không kể điểm đầu và điểm cuối, lớn nhất có thể.
Cho tọa độ các điểm kiểm tra, hãy tìm thứ tự đi qua chúng sao cho góc nhỏ nhất của đường gấp khúc lớn nhất có thể.
Mỗi tệp đầu vào có dạng sau; tất cả các giá trị đều là số nguyên. \(Z_0\) là tham số dùng bởi trình chấm.
N Z_0
X_1 Y_1
...
X_N Y_N
Kết quả gồm \(N\) dòng. Dòng thứ \(k\) chứa số nguyên \(P_k\) \((1 \le P_k \le N)\), là điểm kiểm tra thứ \(k\) trong lộ trình. Điểm xuất phát là \(P_1\).
Nộp các tệp kết quả output_01.txt, output_02.txt, ..., output_06.txt tương ứng với các tệp đầu vào input_01.txt, input_02.txt, ..., input_06.txt.
Tệp aerobatics.h trong gói phát cho thí sinh chứa hàm tính góc tạo bởi ba điểm:
double GetAngle(int xa, int ya, int xb, int yb, int xc, int yc);
Hàm trả về góc \(BAC\) theo đơn vị độ, với sai số đủ nhỏ. Chú ý thứ tự tham số:
xa, ya là hoành độ và tung độ của điểm \(A\), tức đỉnh của góc.xb, yb là hoành độ và tung độ của điểm \(B\).xc, yc là hoành độ và tung độ của điểm \(C\).Bạn có thể sử dụng và sửa đổi hàm GetAngle trong chương trình tạo lời giải của mình. Hàm được cung cấp giống hàm mà trình chấm sử dụng. Đây là thư viện hỗ trợ tạo kết quả, không phải hàm mà thí sinh cần cài đặt để nộp mã nguồn.
Mỗi tệp kết quả không hợp lệ được \(0\) điểm. Chẳng hạn, nếu dãy \(P_1,P_2,\ldots,P_N\) không phải là hoán vị của \(1,2,\ldots,N\), hoặc sai định dạng, tệp đó được \(0\) điểm.
Với kết quả hợp lệ, gọi \(Z\) là góc nhỏ nhất, tính bằng độ, tại \(N-2\) điểm trung gian của lộ trình, và \(S\) là điểm tối đa của tệp tương ứng. Điểm nhận được là:
Trong đó, với \(0 \le \alpha \le 1\),
Điểm của bài là tổng điểm của sáu tệp, sau đó làm tròn đến số nguyên gần nhất.
| Nhóm | Điểm | Tệp đầu vào | \(N\) | \(Z_0\) |
|---|---|---|---|---|
| 1 | 10 | input_01.txt |
15 | 100 |
| 2 | 15 | input_02.txt |
200 | 143 |
| 3 | 15 | input_03.txt |
200 | 134 |
| 4 | 20 | input_04.txt |
1000 | 156 |
| 5 | 20 | input_05.txt |
1000 | 150 |
| 6 | 20 | input_06.txt |
1000 | 153 |
Ví dụ 1
7 90
3 1
2 5
0 2
-1 6
-3 1
-1 -4
4 -2
5
3
1
7
6
4
2
JOI 2021 Spring Training Camp, Contest 1, JCIOI. Bản dịch tiếng Việt và hình trích từ đề chính thức theo CC BY-SA 4.0.
Vương quốc JOI được biểu diễn bằng mặt phẳng tọa độ \(xy\). Có \(N\) ngôi nhà, đánh số từ \(1\) đến \(N\). Nhà \(i\) có tọa độ \((X_i,Y_i)\); các nhà ở những vị trí đôi một khác nhau. Mỗi nhà có một người dân sinh sống. Người sống trong nhà \(i\) được gọi là người dân \(i\).
Một kỳ nghỉ dài bắt đầu. Tại thời điểm \(0\), tất cả mọi người rời nhà để đi du lịch. Mỗi người chọn một hướng cố định trong bốn hướng đông, tây, nam, bắc ngay từ đầu, rồi di chuyển như sau:
Không may, tại thời điểm \(0\), người dân \(1\) mắc căn bệnh truyền nhiễm mới được phát hiện mang tên sốt IOI. Ban đầu không có ai khác mắc bệnh. Bệnh lây theo quy tắc sau: nếu tại một thời điểm, hai người \(a,b\) có cùng tọa độ, người \(a\) đã mắc bệnh còn người \(b\) chưa mắc, thì người \(b\) cũng mắc bệnh ngay lúc đó.
Bệnh không lây bằng bất kỳ cách nào khác. Đây là bệnh không thể chữa khỏi, nên người đã mắc bệnh sẽ không hồi phục.
Là một bộ trưởng, bạn cần ước tính tình huống xấu nhất. Cho số nhà và tọa độ từng nhà, hãy tính số người mắc bệnh lớn nhất có thể tại thời điểm \(10^{100}\), xét tất cả các cách chọn hướng của mọi người.
Đọc từ đầu vào chuẩn, tất cả các giá trị đều là số nguyên:
N
X_1 Y_1
...
X_N Y_N
In một dòng chứa số người mắc bệnh lớn nhất có thể tại thời điểm \(10^{100}\).
Trong bảng dưới, "hoành độ và tung độ đôi một khác nhau" nghĩa là \(X_i\ne X_j\) và \(Y_i\ne Y_j\) với mọi \(1\le i<j\le N\).
Ví dụ 1
2
0 0
4 3
1
Vị trí hai ngôi nhà như sau:
Ví dụ, nếu người \(1\) chọn đông và người \(2\) chọn tây, họ không bao giờ có cùng tọa độ. Người \(2\) không mắc bệnh, và tại thời điểm \(10^{100}\) chỉ người \(1\) mắc bệnh. Dù hai người chọn hướng nào, cũng không thể có hơn một người mắc bệnh, nên in 1. Ví dụ thỏa mãn mọi nhóm.
Ví dụ 2
3
1 2
2 1
4 3
3
Vị trí ba ngôi nhà như sau:
Chẳng hạn, người \(1\) chọn đông, người \(2\) chọn bắc, người \(3\) chọn tây:
Cuối cùng có \(3\) người mắc bệnh, là số lớn nhất có thể, nên in 3. Ví dụ thỏa mãn các nhóm \(1,2,4,5,6,7\).
Ví dụ 3
2
20 20
20 21
2
Cho người \(1\) đi về bắc và người \(2\) đi về nam. Ban đầu chỉ người \(1\) mắc bệnh. Tại thời điểm \(0.5\), cả hai ở \((20,20.5)\), nên người \(2\) cũng mắc bệnh. Có \(2\) người mắc bệnh, là số lớn nhất có thể. Ví dụ thỏa mãn các nhóm \(5,7\).
Ví dụ 4
15
5 6
2 9
12 0
4 11
3 12
6 5
0 8
9 10
11 13
8 7
13 2
1 1
7 14
10 4
14 3
9
Ví dụ thỏa mãn các nhóm \(2,4,5,6,7\).
Ví dụ 5
30
275810186 246609547
122805872 99671769
243507947 220373844
281305347 252104708
237805644 214671541
172469077 149334974
222589229 229887956
160653451 208404690
241378966 211098219
144302355 224755786
186392385 163258282
199129390 169928751
294937491 265736852
196096122 172962019
314342944 285142305
202720470 166337671
157037485 133903382
263858979 240724876
210720220 181519581
296402036 267201397
186021287 183036854
195081930 173976211
328293029 299092390
261195361 238061258
323595085 294394446
299933764 270733125
240976723 128081418
188501753 165367650
277832422 248631783
119896220 96762117
11
Ví dụ thỏa mãn các nhóm \(4,5,6,7\).
JOI 2021 Spring Training Camp, Contest 1, JCIOI. Bản dịch tiếng Việt và hình trích từ đề chính thức theo CC BY-SA 4.0.
Trung tâm IOI là một cơ sở huấn luyện có chỗ ở và khu ẩm thực phục vụ các đoàn đông người. Khu ẩm thực có \(N\) cửa hàng xếp thành một hàng, đánh số từ \(1\) đến \(N\). Trước mỗi cửa hàng có một hàng đợi cho khách.
Hôm nay có \(M\) đoàn lưu trú tại trung tâm, đánh số từ \(1\) đến \(M\). Thành viên các đoàn xếp hàng theo một cách khá lạ để trò chuyện với nhau. Đôi khi cửa hàng tặng món tráng miệng miễn phí cho một khách trong hàng. JOI-kun làm việc tại đây, có nhiệm vụ ghi lại đoàn của từng người nhận quà.
Trước khi mở cửa, các hàng đợi đều trống. Trong ngày xảy ra \(Q\) sự kiện theo thứ tự. Sự kiện thứ \(i\) thuộc một trong ba loại:
JOI-kun làm mất bản ghi các đoàn của những người nhận quà. Cậu muốn khôi phục nó từ thông tin về \(Q\) sự kiện. Với mỗi sự kiện Phục vụ, hãy xác định có khách nhận quà hay không; nếu có, hãy tìm số hiệu đoàn của người đó.
Đọc từ đầu vào chuẩn, tất cả các giá trị đều là số nguyên:
N M Q
(Sự kiện 1)
...
(Sự kiện Q)
Mỗi dòng sự kiện bắt đầu bằng số nguyên \(T_i\):
1 L_i R_i C_i K_i: Vào hàng. Thêm \(K_i\) người thuộc đoàn \(C_i\) vào cuối hàng của mỗi cửa hàng từ \(L_i\) đến \(R_i\).2 L_i R_i K_i: Rời hàng. Cho \(K_i\) người đầu hàng rời đi ở mỗi cửa hàng từ \(L_i\) đến \(R_i\), hoặc cho tất cả rời đi nếu hàng có ít hơn \(K_i\) người.3 A_i B_i: Phục vụ. Tặng quà cho người thứ \(B_i\) trong hàng của cửa hàng \(A_i\) nếu người đó tồn tại; nếu không thì nhân viên ăn quà.Với mỗi sự kiện có \(T_i=3\), theo đúng thứ tự xảy ra, in một dòng chứa số hiệu đoàn của người nhận quà; in 0 nếu nhân viên cửa hàng ăn món tráng miệng.
Ví dụ 1
3 5 7
1 2 3 5 2
1 1 2 2 4
3 2 3
2 1 3 3
3 1 2
1 2 3 4 2
3 3 2
2
0
4
Ta biểu diễn một hàng bằng dãy số hiệu đoàn của các khách, từ đầu đến cuối. Chẳng hạn, \((1,2,2)\) là hàng gồm ba người lần lượt thuộc các đoàn \(1,2,2\); \(()\) là hàng trống.
2.0.4.Ví dụ thỏa mãn các nhóm \(2,7,8\).
Ví dụ 2
3 4 7
1 1 2 1 1
1 1 3 4 1
2 2 3 1
2 1 3 1
1 1 2 2 1
3 1 1
3 3 2
4
0
Ví dụ thỏa mãn các nhóm \(1,2,3,5,7,8\).
Ví dụ 3
183326 218318 22
1 106761 160918 151683 574906362
3 68709 1
1 29240 156379 22166 957318472
1 14054 181502 82845 97183925
2 112033 122908 587808357
2 57819 160939 215041262
3 36674 524274467
1 35854 69866 32334 322730299
1 1384 7230 115069 454256926
1 44192 158235 8750 84192710
3 54457 1077490708
2 10592 110384 979714505
2 44594 79244 311724477
3 160965 97183926
1 88748 101697 39148 373927458
3 41166 58039001
1 91501 137591 205480 958877326
2 77775 169655 135756956
1 12497 57047 60918 15666764
1 47839 51716 144688 732270998
3 114514 774994894
3 48645 169986425
0
22166
32334
0
82845
8750
60918
JOI 2021 Spring Training Camp, Contest 1, JCIOI. Bản dịch tiếng Việt theo CC BY-SA 4.0.