| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2011 - Banner | 100 (p) | 1.5s | 64M |
| 2 | JOI 2011 - Dragon | 100 (p) | 10.0s | 64M |
| 3 | JOI 2011 - Joitter | 100 (p) | 1.0s | 64M |
Vào năm 20XX, cuối cùng kỳ thi IOI cũng được tổ chức tại đất nước JOI. Để chào mừng sự kiện này, người dân quyết định treo các băng rôn chào đón khắp các con phố. Như hình dưới đây, đất nước JOI có \(H\) con đường chạy theo hướng đông–tây và \(W\) con đường chạy theo hướng bắc–nam, tạo thành một lưới ô vuông. Nơi một con đường đông–tây giao với một con đường bắc–nam được gọi là giao lộ. Giao lộ thứ \(a\) tính từ phía bắc và thứ \(b\) tính từ phía tây được ký hiệu là \((a,b)\).
Tại mỗi giao lộ có một cây cột. Đất nước JOI có ba màu biểu tượng là đen, xám và trắng; mỗi cây cột được sơn bằng một trong ba màu này.
Hình minh họa đất nước JOI khi \(H=3\), \(W=4\). Phía trên hình là hướng bắc, phía bên trái là hướng tây.
Có thể dùng các cây cột này để treo băng rôn. Tuy nhiên, băng rôn sẽ gây cản trở nếu đi qua những nơi không phải là đường. Vì vậy, người dân chọn bốn cây cột khác nhau tại bốn đỉnh của một hình chữ nhật có mỗi cạnh song song với một con đường, rồi treo băng rôn quanh hình chữ nhật đó. Ngoài ra, trong bốn cây cột được chọn phải có ít nhất một cột đen, một cột xám và một cột trắng.
Cho \(H\), \(W\) và màu của các cây cột, hãy tính số cách chọn bốn cây cột thỏa mãn các điều kiện trên.
Đọc từ đầu vào chuẩn:
In ra đầu ra chuẩn một dòng chứa số cách chọn bốn cây cột.
Theo tài liệu kỹ thuật của kỳ thi gốc:
long long, với định dạng %lld khi dùng scanf hoặc printf.scanf/printf thay cho cin/cout do tốc độ vào/ra trên hệ thống thi gốc.Bài có tổng cộng \(100\) điểm, gồm \(10\) bộ dữ liệu, mỗi bộ \(10\) điểm.
Ví dụ 1
3 4
0 1 0 2
1 2 0 1
0 0 2 1
12
Có đúng \(12\) cách chọn bốn cây cột như sau:
Vì vậy, kết quả cần in là \(12\).
Những con rồng đã xông vào địa điểm thi IOI. Phòng thi có dạng hình chữ nhật, được chia thành \(H\) hàng và \(W\) cột ô vuông. Các hàng được đánh số từ \(1\) đến \(H\), các cột được đánh số từ \(1\) đến \(W\); ô ở hàng \(x\), cột \(y\) được ký hiệu là \((x,y)\). Có \(N\) con rồng; con rồng thứ \(i\) ở ô \((X_i,Y_i)\). Không có hai con rồng nào cùng ở một ô.
Một con rồng có thể phun lửa tấn công các ô cùng hàng hoặc cùng cột với nó. Thí sinh chỉ được đứng trong những ô không có rồng, mỗi ô nhiều nhất một người, và không được đứng trong ô có nguy cơ bị rồng tấn công.
Để tăng số thí sinh có thể tham dự nhiều nhất có thể, chủ tịch M của JOI quyết định mang theo một thiết bị chống lửa và đứng tại một ô không có rồng. Ngay cả khi một thí sinh và một con rồng ở cùng hàng hoặc cùng cột, nếu chủ tịch M đứng giữa họ thì lửa sẽ bị chặn lại, nên thí sinh đó không bị con rồng ấy tấn công. Tuy nhiên, chủ tịch M biết đáp án của tất cả các bài thi, nên không thí sinh nào được đứng cùng ô với ông.
Cho kích thước phòng thi và vị trí các con rồng, hãy tìm số thí sinh lớn nhất có thể có mặt trong phòng khi chủ tịch M chọn vị trí tối ưu.
Đọc từ đầu vào chuẩn:
Không có hai con rồng nào ở cùng một ô. Có ít nhất một ô không có rồng.
In ra đầu ra chuẩn một dòng chứa số thí sinh lớn nhất có thể có mặt trong phòng thi.
Theo tài liệu kỹ thuật của kỳ thi gốc:
long long, với định dạng %lld khi dùng scanf hoặc printf.scanf/printf thay cho cin/cout do tốc độ vào/ra trên hệ thống thi gốc.Bài có tổng cộng \(100\) điểm, gồm \(10\) bộ dữ liệu, mỗi bộ \(10\) điểm. Các tỉ lệ dưới đây mô tả những tập dữ liệu có thể giao nhau:
Ví dụ 1
4 6 3
2 4
3 5
2 3
9
Hình dưới đây tương ứng với dữ liệu vào của ví dụ. Ký hiệu D biểu thị một con rồng.
Hình tiếp theo là một cách bố trí chủ tịch M và các thí sinh. Ký hiệu M biểu thị chủ tịch M, còn C biểu thị một thí sinh. Cách bố trí này cho phép \(9\) thí sinh có mặt trong phòng. Dù đặt chủ tịch M ở đâu, cũng không thể bố trí từ \(10\) thí sinh trở lên.
Joitter là một mạng xã hội đang rất được quan tâm, giúp mọi người giao tiếp với người quen trên Internet thuận tiện hơn thông qua việc dễ dàng đăng những bài nhật ký ngắn và chia sẻ ảnh.
Trên Joitter, một người dùng có thể thêm những người dùng khác vào danh sách “bạn bè”. Khi người dùng \(A\) muốn thêm người dùng \(B\) làm bạn, \(B\) sẽ nhận được thông báo. Nếu \(B\) đồng ý, hai người được thêm vào danh sách bạn bè của nhau. Việc này được tính là một lần kết bạn. Vì một lý do nào đó, mỗi lần kết bạn có một chi phí phụ thuộc vào hai người dùng. Việc \(A\) và \(B\) là bạn, đồng thời \(B\) và \(C\) là bạn, không nhất thiết có nghĩa là \(A\) và \(C\) là bạn.
Mỗi người dùng có thể chọn một trong ba chế độ công khai nhật ký sau:
Có \(N\) người vừa đăng ký Joitter, mỗi người chọn một trong ba chế độ trên. Tình cờ, không có chế độ nào được đúng một người chọn: với mỗi người dùng, luôn có ít nhất một người khác chọn cùng chế độ với họ.
Ban đầu, chưa có quan hệ bạn bè nào giữa \(N\) người này. Hãy tìm số lần kết bạn ít nhất để mỗi người trong số họ đều đọc được nhật ký của tất cả những người còn lại. Trong các cách thực hiện dùng đúng số lần kết bạn ít nhất đó, hãy tìm tổng chi phí nhỏ nhất.
Đọc từ đầu vào chuẩn:
In ra đầu ra chuẩn một dòng chứa hai số nguyên cách nhau bởi dấu cách: số lần kết bạn nhỏ nhất để mọi người đều đọc được nhật ký của tất cả những người còn lại, và tổng chi phí nhỏ nhất để đạt được điều đó với đúng số lần kết bạn ấy.
Theo tài liệu kỹ thuật của kỳ thi gốc:
long long, với định dạng %lld khi dùng scanf hoặc printf.scanf/printf thay cho cin/cout do tốc độ vào/ra trên hệ thống thi gốc.Ví dụ 1
7
1
3
2
1
3
1
2
0 5 2 1 6 3 2
5 0 1 5 2 4 8
2 1 0 3 4 1 1
1 5 3 0 4 9 5
6 2 4 4 0 6 2
3 4 1 9 6 0 6
2 8 1 5 2 6 0
15 62
Ví dụ 2
5
2
2
3
2
3
0 2 1 9 9
2 0 8 4 6
1 8 0 7 5
9 4 7 0 8
9 6 5 8 0
4 20
Ví dụ 3
3
3
3
3
0 8 7
8 0 9
7 9 0
2 15