trang chủ / bài tập / skyparade

Đường bao thành phố

Đề bài

Mô tả

Thành phố chuẩn bị tổ chức lễ duyệt binh, trong đó các máy bay sẽ bay theo hướng từ nam lên bắc. Nhìn thành phố từ hướng nam về hướng bắc, ta thu được một mặt phẳng toạ độ: mặt đất là trục hoành, còn toà nhà thứ i là một hình chữ nhật có chiều cao hi, cạnh trái nằm tại hoành độ li và cạnh phải nằm tại hoành độ ri.

Nhiệm vụ của bạn là tìm đường bao của toàn bộ các toà nhà. Đường bao là một đường gấp khúc thoả mãn đồng thời các tính chất sau:

  • Mọi phần của mọi toà nhà đều nằm bên trong hoặc trên biên của miền được giới hạn bởi đường gấp khúc cùng với mặt đất.
  • Đường gấp khúc bắt đầu và kết thúc ở độ cao 0.
  • Mỗi đoạn của đường gấp khúc song song với một trong hai trục toạ độ (tức là chỉ nằm ngang hoặc thẳng đứng).
  • Các đỉnh của đường gấp khúc có toạ độ nguyên.
  • Miền được giới hạn bởi đường gấp khúc và mặt đất có diện tích nhỏ nhất có thể.
  • Trong số các đường gấp khúc có diện tích nhỏ nhất, đường gấp khúc được chọn có tổng độ dài nhỏ nhất.
  • Hai đoạn liên tiếp của đường gấp khúc luôn vuông góc với nhau.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số toà nhà.
  • n dòng tiếp theo, dòng thứ i chứa ba số nguyên hi, li, ri.

Dữ liệu ra

  • Dòng đầu ghi số nguyên m: số đỉnh của đường bao.
  • m dòng tiếp theo, mỗi dòng ghi hai số nguyên là hoành độ và độ cao của một đỉnh, liệt kê theo thứ tự đi dọc đường gấp khúc từ tây sang đông. Đỉnh đầu tiên và đỉnh cuối cùng phải có độ cao bằng 0.

Ràng buộc

  • 1n100000
  • 1hi109
  • 109li<ri109

Ví dụ

Input Output Giải thích
2
3 0 2
4 1 3
6
0 0
0 3
1 3
1 4
3 4
3 0
Trên đoạn [0,1] độ cao lớn nhất là 3, trên đoạn [1,3] độ cao lớn nhất là 4. Đường bao đi lên độ cao 3 tại x=0, lên tiếp độ cao 4 tại x=1, rồi hạ xuống mặt đất tại x=3.
5
3 -3 0
2 -1 1
4 2 4
2 3 7
3 6 8
14
-3 0
-3 3
0 3
0 2
1 2
1 0
2 0
2 4
4 4
4 2
6 2
6 3
8 3
8 0
Đường bao chạm mặt đất ở khoảng giữa x=1x=2 vì không có toà nhà nào phủ khoảng này, nên nó gồm hai phần rời nhau nối với nhau bằng đoạn nằm ngang ở độ cao 0.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0