JOI 2011 - Dragon

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2400 (p) Thời gian: 10.0s Bộ nhớ: 64M Input: bàn phím Output: màn hình

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.

Yêu cầu

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.

Dữ liệu vào

Đọc từ đầu vào chuẩn:

  • Dòng đầu chứa ba số nguyên \(H,W,N\), cách nhau bởi dấu cách.
  • \(N\) dòng tiếp theo mô tả vị trí các con rồng. Dòng thứ \(i+1\) (\(1\le i\le N\)) chứa hai số nguyên \(X_i,Y_i\), cách nhau bởi dấu cách, là vị trí con rồng thứ \(i\).

Không có hai con rồng nào ở cùng một ô. Có ít nhất một ô không có rồng.

Dữ liệu ra

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.

Ràng buộc

  • \(1\le H\le1\,000\,000\,000\): số hàng của phòng thi.
  • \(1\le W\le1\,000\,000\,000\): số cột của phòng thi.
  • \(1\le N\le100\,000\): số con rồng.
  • \(1\le X_i\le H\)\(1\le Y_i\le W\) với mọi \(1\le i\le N\).
  • Giới hạn thời gian CPU: \(10\) giây. Giới hạn bộ nhớ: \(64\) MB.

Thông tin kỹ thuật

Theo tài liệu kỹ thuật của kỳ thi gốc:

  • Chương trình phải kết thúc bình thường với mã trả về \(0\). Chỉ được tính điểm khi chương trình cho kết quả đúng, kết thúc bình thường và tuân thủ giới hạn thời gian, bộ nhớ.
  • Nếu không có quy định khác, giới hạn ngăn xếp là \(8\) MB. Cần chú ý tránh tràn ngăn xếp khi dùng đệ quy.
  • Một số bài có thể cần xử lý số nguyên vượt quá phạm vi \(32\) bit; khi đó, trong C/C++ cần dùng kiểu số nguyên \(64\) bit như long long, với định dạng %lld khi dùng scanf hoặc printf.
  • Với lượng dữ liệu vào/ra lớn, tài liệu khuyến nghị dùng scanf/printf thay cho cin/cout do tốc độ vào/ra trên hệ thống thi gốc.

Phân nhóm

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:

  • Các bộ dữ liệu chiếm \(30\%\) tổng số điểm thỏa mãn \(H\le1000\)\(W\le1000\).
  • Các bộ dữ liệu chiếm \(40\%\) tổng số điểm thỏa mãn \(N\le1000\).
  • Các bộ dữ liệu chiếm \(20\%\) tổng số điểm thỏa mãn đồng thời \(H\le1000\), \(W\le1000\)\(N\le1000\).
  • Các bộ dữ liệu chiếm \(50\%\) tổng số điểm thỏa mãn ít nhất một trong hai điều kiện: (\(H\le1000\)\(W\le1000\)), hoặc \(N\le1000\).

Ví dụ

Ví dụ 1

Input
4 6 3
2 4
3 5
2 3
Output
9
Giải thích

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.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: