JOI 2014 - Cutting

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: 3.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

JOI thích làm mô hình giấy. Hôm nay, cậu lại chuẩn bị làm một tác phẩm mới.

Trước hết, theo bản thiết kế, JOI in \(N\) đường cắt lên một tờ giấy hình chữ nhật. Mỗi đường cắt là một đoạn thẳng song song với cạnh dọc hoặc cạnh ngang của tờ giấy.

Tất cả các phần giấy tạo ra sau khi cắt đều sẽ được dùng làm các bộ phận của tác phẩm. Tất nhiên, tác phẩm càng có nhiều bộ phận thì càng khó làm. JOI muốn biết tờ giấy sẽ được chia thành bao nhiêu phần sau khi cắt theo tất cả các đường cắt.

Yêu cầu

Cho kích thước tờ giấy và thông tin về \(N\) đường cắt. Hãy tính số phần mà tờ giấy được chia thành sau khi cắt theo những đường này.

Dữ liệu vào

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

  • Dòng đầu chứa ba số nguyên \(W, H, N\) cách nhau bởi dấu cách. \(W\) là độ dài cạnh ngang, \(H\) là độ dài cạnh dọc của tờ giấy và \(N\) là số đường cắt. Các góc dưới trái, dưới phải, trên trái, trên phải của tờ giấy lần lượt có tọa độ \((0,0)\), \((W,0)\), \((0,H)\), \((W,H)\).
  • Dòng thứ \(i\) trong \(N\) dòng tiếp theo chứa bốn số nguyên \(A_i, B_i, C_i, D_i\) cách nhau bởi dấu cách, thỏa mãn \(0 \le A_i \le C_i \le W\)\(0 \le B_i \le D_i \le H\). Đường cắt thứ \(i\) là đoạn thẳng nối \((A_i,B_i)\) với \((C_i,D_i)\). Đoạn thẳng này song song với một cạnh của tờ giấy, tức là đúng một trong hai đẳng thức \(A_i=C_i\)\(B_i=D_i\) được thỏa mãn. Hai đường cắt song song bất kỳ không có điểm chung. Một đường cắt cũng không có điểm chung với bất kỳ cạnh nào của tờ giấy song song với nó.

Dữ liệu ra

In ra đầu ra chuẩn một dòng chứa một số nguyên: số phần mà tờ giấy được chia thành.

Ràng buộc

  • \(1 \le W \le 1\,000\,000\,000\).
  • \(1 \le H \le 1\,000\,000\,000\).
  • \(1 \le N \le 100\,000\).

Phân nhóm

  • Nhóm 1 (5 điểm): \(W \le 1\,000\), \(H \le 1\,000\), \(N \le 1\,000\).
  • Nhóm 2 (5 điểm): \(N \le 1\,000\).
  • Nhóm 3 (20 điểm): Số cặp đường cắt khác nhau có điểm chung không vượt quá \(100\,000\).
  • Nhóm 4 (20 điểm): Từ bất kỳ điểm nào nằm trên một đường cắt, đều có thể đi dọc theo một số đường cắt để đến một điểm trên một cạnh của tờ giấy.
  • Nhóm 5 (50 điểm): Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
10 10 5
6 0 6 7
0 6 7 6
2 3 9 3
2 3 2 10
1 9 8 9
Output
4
Giải thích

Với dữ liệu này, các đường cắt được thể hiện trong hình minh họa cho ví dụ 1.

Do đó, các đường cắt chia tờ giấy thành \(4\) phần. Dữ liệu này thỏa mãn điều kiện của subtask \(4\).

Ví dụ 2

Input
13 7 28
1 1 4 1
1 1 1 3
2 2 3 2
2 2 2 3
1 3 2 3
3 2 3 6
4 1 4 6
3 6 4 6
5 1 8 1
5 1 5 6
6 2 7 2
6 2 6 5
7 2 7 5
6 5 7 5
8 1 8 6
5 6 8 6
9 1 12 1
9 1 9 2
9 2 10 2
12 1 12 2
11 2 12 2
10 2 10 5
9 5 10 5
9 5 9 6
11 2 11 5
11 5 12 5
12 5 12 6
9 6 12 6
Output
5
Giải thích

Với dữ liệu này, các đường cắt được thể hiện trong hình minh họa cho ví dụ 2.

Do đó, các đường cắt chia tờ giấy thành \(5\) phần. Dữ liệu này không thỏa mãn điều kiện của subtask \(4\).

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: