trang chủ / đề bài / dhbb22_archi

Khảo cổ khu Hoàng Thành

Đề bài

Mô tả

Các nhà khảo cổ mới phát hiện ra một khu Hoàng Thành được xây dựng từ nhiều thế kỷ trước. Theo nhận định ban đầu, Hoàng Thành gồm nhiều căn phòng khép kín bởi bốn bức tường song song hoặc vuông góc với nhau. Để tiến hành nghiên cứu, các nhà khảo cổ đã xây dựng bản đồ các bức tường của khu Hoàng Thành. Cụ thể, bản đồ được mô tả trên mặt phẳng tọa độ Đề các vuông góc Oxy, trong đó các bức tường là các đoạn thẳng song song với một trong hai trục tọa độ. Theo các dữ liệu thu thập được, có n căn phòng được đánh số từ 1 đến n, căn phòng thứ i (1≤i≤n) là một hình chữ nhật có tọa độ trái dưới là (xi,yi) và tọa độ phải trên là (ui,vi). Bốn bức tường tương ứng là các đoạn thẳng nối tọa độ (xi,yi) với (xi,vi), (xi,vi) với (ui,vi), (ui,vi) với (ui,yi) và (ui,yi) với (xi,yi). Hai đoạn thẳng mô tả hai bức tường của hai phòng khác nhau không có điểm chung.

Một thiết bị đặc biệt được các nhà khảo cổ sử dụng để khảo sát khu Hoàng Thành. Thiết bị nhỏ gọn nhưng mỗi khi cần điều khiển thiết bị để vượt qua một bức tường là rất khó khăn. Với một giả định, ban đầu thiết bị được đặt tại tọa độ (xs,ys) và cần di chuyển tới tọa độ (xf,yf), các nhà khảo cổ muốn tính toán số bức tường ít nhất cần vượt qua khi điều khiển thiết bị.

Yêu cầu: Cho các thông tin về khu Hoàng Thành và m giả định, với mỗi giả định hãy giúp các nhà khảo cổ tính toán số bức tường ít nhất cần vượt qua khi điều khiển thiết bị.

Dữ liệu vào

  • Dòng đầu gồm hai số nguyên dương n,m;
  • Dòng thứ i (1≤i≤n) trong n dòng tiếp theo gồm bốn số nguyên xi,yi,ui,vi mô tả căn phòng thứ i (−109<xi<ui<109; −109<yi<vi<109);
  • Dòng thứ j (1≤j≤m) trong m dòng tiếp theo, mỗi dòng mô tả một giả định gồm bốn số nguyên xs,ys,xf,yf (−109<xs,ys,xf,yf<109). Điểm (xs,ys) và điểm (xf,yf) không nằm trên bất kì đoạn thẳng nào mô tả các bức tường của khu Hoàng Thành.

Dữ liệu ra

In ra m dòng, dòng thứ j là số bức tường ít nhất cần vượt qua ở giả định thứ j.

Ràng buộc

  • 1≤n,m≤106.
  • −109<xi<ui<109; −109<yi<vi<109.
  • −109<xs,ys,xf,yf<109.
  • Hai bức tường của hai phòng khác nhau không có điểm chung; hai điểm của mỗi giả định không nằm trên bức tường nào.

Subtasks

Điểm được tính theo từng test.

  • Có 30% số test ứng với 30% số điểm của bài thỏa mãn: n,m≤102.
  • 40% số test khác ứng với 40% số điểm của bài thỏa mãn: n,m≤104.
  • 30% số test còn lại ứng với 30% số điểm của bài thỏa mãn: n,m≤106.

Ví dụ

Input Output Giải thích
3 2
1 0 6 4
2 1 4 3
7 2 9 5
3 2 8 3
8 3 0 0
3
1
Phòng 2 (từ (2,1) đến (4,3)) nằm trong phòng 1 (từ (1,0) đến (6,4)), phòng 3 (từ (7,2) đến (9,5)) nằm riêng bên phải. Giả định 1: điểm (3,2) ở trong phòng 2, điểm (8,3) ở trong phòng 3, phải vượt tường phòng 2, tường phòng 1 rồi tường phòng 3: 3 bức tường. Giả định 2: từ phòng 3 ra điểm (0,0) bên ngoài mọi phòng: 1 bức tường.
4 3
0 0 10 6
1 1 4 5
5 1 9 5
6 2 8 4
2 3 7 3
11 3 2 3
11 7 -1 -1
3
2
0
Ví dụ bổ sung (không có trong đề gốc). Phòng 1 chứa hai phòng 2 và 3 đứng cạnh nhau, phòng 4 nằm trong phòng 3. Giả định 1: từ phòng 2 sang phòng 4 chỉ cần ra khỏi phòng 2, vào phòng 3 rồi vào phòng 4 (không phải ra khỏi phòng 1): 3 bức tường. Giả định 2: từ bên ngoài vào phòng 2: 2 bức tường. Giả định 3: cả hai điểm ở ngoài mọi phòng: 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.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