trang chủ / đề bài / voi22_paint

Phần mềm vẽ

Đề bài

Mô tả

Nam đã xây dựng được một phần mềm vẽ hình với giao diện chính là một bảng vẽ kích thước W×H. Bảng vẽ được đặt trên hệ trục chiếm một vùng là một hình chữ nhật có tọa độ trái dưới là (0,0) và tọa độ phải trên là (W,H). Nam đã vẽ n đa giác lồi trên bảng vẽ để thử nghiệm phần mềm, đa giác nào cũng có đúng m đỉnh.

Đa giác thứ i (1≤i≤n) được mô tả bằng dãy tọa độ của m đỉnh liệt kê theo chiều kim đồng hồ tương ứng là (xi,1,yi,1),(xi,2,yi,2),…,(xi,m,yi,m). Hai cạnh bất kì của hai đa giác không có điểm chung và cũng không chạm vào biên của bảng vẽ. Có Q phương án thử nghiệm, phương án thứ t (1≤t≤Q) sẽ thực hiện bấm tô màu vào điểm (xt,yt) không nằm trên bất kì cạnh nào của đa giác cũng như biên của bảng vẽ, khi đó toàn bộ vùng chứa điểm (xt,yt) được giới hạn bởi các cạnh của đa giác và biên của bảng vẽ sẽ được tô, phần mềm sẽ trả về diện tích vùng được tô.

Yêu cầu: Cho n đa giác lồi cùng có m đỉnh và Q phương án tô màu, với mỗi phương án hãy xác định diện tích vùng được tô màu để kiểm tra phần mềm.

Dữ liệu vào

  • Dòng đầu chứa năm số nguyên W,H,n,m,Q (W,H≤108; 3≤m≤5);
  • Dòng thứ i (1≤i≤n) trong n dòng tiếp theo chứa 2m số nguyên dương xi,1,yi,1,xi,2,yi,2,…,xi,m,yi,m lần lượt là tọa độ m đỉnh được liệt kê theo chiều kim đồng hồ của đa giác thứ i (0<xi,1,xi,2,…,xi,m<W; 0<yi,1,yi,2,…,yi,m<H);
  • Dòng thứ t (1≤t≤Q) trong Q dòng tiếp theo chứa hai số nguyên dương xt,yt mô tả phương án thứ t (0<xt<W; 0<yt<H).

Các số trên cùng một dòng cách nhau bởi dấu cách.

Dữ liệu ra

In ra Q dòng, mỗi dòng chứa một số thực (lấy đúng một chữ số sau dấu chấm thập phân) là diện tích vùng được tô tương ứng phương án trong dữ liệu vào.

Ràng buộc

  • W,H≤108; 3≤m≤5; n,Q≤105.
  • 0<xi,j<W; 0<yi,j<H; 0<xt<W; 0<yt<H.
  • Các đỉnh của mỗi đa giác được liệt kê theo chiều kim đồng hồ; hai cạnh bất kì của hai đa giác không có điểm chung và không chạm vào biên của bảng vẽ.
  • Điểm tô màu không nằm trên cạnh nào của đa giác.

Subtasks

  • Subtask 1 (30% số điểm): n,Q≤20 và các đa giác là các hình chữ nhật có cạnh song song với một trong hai trục tọa độ.
  • Subtask 2 (35% số điểm): n,Q≤2000.
  • Subtask 3 (25% số điểm): n,Q≤105 và các đa giác là các hình chữ nhật có cạnh song song với một trong hai trục tọa độ.
  • Subtask 4 (10% số điểm): n,Q≤105.

Ví dụ

Input Output Giải thích
9 8 4 3 3
8 1 1 1 1 7
5 7 8 7 8 5
2 3 2 5 3 4
2 2 4 3 5 2
7 6
6 2
8 3
3.0
18.5
48.0
Tam giác 1 có diện tích 21 và chứa hai tam giác 3 (diện tích 1) và 4 (diện tích 1.5); tam giác 2 (diện tích 3) nằm ngoài tam giác 1. Điểm (7,6) nằm trong tam giác 2: diện tích 3. Điểm (6,2) nằm trong tam giác 1 và ngoài hai tam giác 3,4: diện tích 21−1−1.5=18.5. Điểm (8,3) nằm ngoài mọi tam giác: diện tích 9·8−21−3=48.
12 12 3 4 4
6 6 6 8 8 8 8 6
2 2 2 11 11 11 11 2
4 4 4 9 9 9 9 4
1 1
3 3
5 5
7 7
63.0
56.0
21.0
4.0
Ví dụ thêm (không có trong đề gốc). Ba hình vuông lồng nhau có diện tích 81 (hình 2), 25 (hình 3) và 4 (hình 1). Các vùng lần lượt có diện tích 144−81=63, 81−25=56, 25−4=21 và 4.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0